2015-07-01 61 views
0

我想有一個方法,可以在任何類型作爲參數(對象,int,布爾,ArrayList等)。這是一個非常簡單的方法來說明它會嘗試做:通過任何類型作爲方法參數

public void printAnything(Type arg0) { 
    System.out.println(arg0); 
} 

什麼,我問的是,什麼將取代該方法Type

+0

@Trobbins小心。泛型不支持原始類型。 –

+0

@Luig你是對的,謝謝你的提醒。 – CubeJockey

+1

我不確定,但我認爲'Object'應該可以完成這項工作,因爲每個對象都是從'Object'派生而來的,並且每個正常類型(int,boolean,...)都可以被自動裝箱,所以你也應該能夠通過它們作爲參數... –

回答

3

在您的具體示例中,Object會很好,因爲PrintStream#println(Object obj)會打印字符串表示形式(使用String#valueOf(Object))。

當您傳遞一個原始值時,它將被自動裝箱到其包裝類型中,例如int將被轉換爲java.lang.Integer,其延伸爲Object

+0

謝謝!這工作! – LAB

0

您可以使用Object作爲類型。它可以自動整形到Integer等。 見here

對象類是所有其他類的超類。所以,你可以使用它。另見this

0

您需要接受的數據類型是Object

因爲Java中,一切都從它派生,除了基本數據類型等intfloatboolean
那些然而如果需要Object也可以被傳遞,因爲Java原語之間自動轉換(例如int )及其對象表示(例如,Integer),具體取決於哪種形式適合方法原型。這個功能被稱爲自動裝箱。

0

您可以同時使用

public void printAnything(Object arg0) { 
    System.out.println(arg0); 
} 

public void <T> printAnything(T arg0) { 
    System.out.println(arg0); 
} 

兩個版本也可以調用原語感謝自動裝箱。

另請參閱Java generics T vs Object