我想有一個方法,可以在任何類型作爲參數(對象,int,布爾,ArrayList等)。這是一個非常簡單的方法來說明它會嘗試做:通過任何類型作爲方法參數
public void printAnything(Type arg0) {
System.out.println(arg0);
}
什麼,我問的是,什麼將取代該方法Type
?
我想有一個方法,可以在任何類型作爲參數(對象,int,布爾,ArrayList等)。這是一個非常簡單的方法來說明它會嘗試做:通過任何類型作爲方法參數
public void printAnything(Type arg0) {
System.out.println(arg0);
}
什麼,我問的是,什麼將取代該方法Type
?
在您的具體示例中,Object
會很好,因爲PrintStream#println(Object obj)
會打印字符串表示形式(使用String#valueOf(Object)
)。
當您傳遞一個原始值時,它將被自動裝箱到其包裝類型中,例如int
將被轉換爲java.lang.Integer
,其延伸爲Object
。
謝謝!這工作! – LAB
您需要接受的數據類型是Object
。
因爲Java中,一切都從它派生,除了基本數據類型等int
,float
,boolean
等
那些然而如果需要Object
也可以被傳遞,因爲Java原語之間自動轉換(例如int
)及其對象表示(例如,Integer
),具體取決於哪種形式適合方法原型。這個功能被稱爲自動裝箱。
您可以同時使用
public void printAnything(Object arg0) {
System.out.println(arg0);
}
和
public void <T> printAnything(T arg0) {
System.out.println(arg0);
}
兩個版本也可以調用原語感謝自動裝箱。
@Trobbins小心。泛型不支持原始類型。 –
@Luig你是對的,謝謝你的提醒。 – CubeJockey
我不確定,但我認爲'Object'應該可以完成這項工作,因爲每個對象都是從'Object'派生而來的,並且每個正常類型(int,boolean,...)都可以被自動裝箱,所以你也應該能夠通過它們作爲參數... –