什麼時候應該讓方法調用JavaClass.class作爲參數?我經常看到類似下面的代碼,但我不明白:方法調用具有.class作爲參數?
String foo(Baar bar) { ... }
foo(Baar.class)
什麼時候應該讓方法調用JavaClass.class作爲參數?我經常看到類似下面的代碼,但我不明白:方法調用具有.class作爲參數?
String foo(Baar bar) { ... }
foo(Baar.class)
在java中,你可以聲明方法期待Class類型的參數。像
String foo(Class<Baar> bar) { ... }
調用方法的方式事情是:
Baar bar = new Baar();
foo(bar.getClass());
或者類似的東西
foo(Bar.class);
型類的參數可以通過以各種理由功能foo()
使用:它可以使用實例化一個相同類型的新對象
String foo(Class<Baar> bar) {
Baar barInstance = bar.newInstance();
}
它也可以在if-then-else塊中使用它根據類的類型採取特定的操作。
String foo(Class<?> bar) {
if (bar == Baar.class) {
System.out.println("Baar type received.");
}
}
請注意,期望Class對象的函數的方法簽名必須明確地聲明如此。否則會導致編譯時錯誤;就像你的情況一樣。在你的情況下,函數foo需要一個Baar對象。你不能傳遞它一個Baar.class引用。
當方法需要Class
作爲參數。
例如,EnumSet.allOf(Class<E> elementType)
預計枚舉類(而不是一個枚舉實例)作爲參數。因此,假設Season
是一個枚舉,你怎麼稱呼它使用
EnumSet.allOf(Season.class)
在您的例子,有沒有辦法可以傳遞Baar.class
作爲參數傳遞給foo()
,因爲foo()
預計一巴爾實例作爲參數。所以,你需要的是像
Baar baar = new Baar();
foo(baar);
謝謝:)現在我明白了 –
這在語法上不正確。請提供具體/真實的例子。 –
簡短的方法採取類< T >作爲參數想要關於類型的信息,而不是類型T的實例 –