我有這個問題。構造函數不應該和類有相同的類型參數嗎?不能從java.lang.Class <T>轉換爲java.lang.Class <T>
public class MyBuilder<T> {
private final Class<T> clss;
/**
*
* @param clss
*/
public <T> MyBuilder(final Class<T> clss) {
this.clss = (Class<T>) clss; // compiler error here
}
Type mismatch: cannot convert from java.lang.Class<T> to java.lang.Class<T>
如果我刪除<T>
它編譯構造函數,但我不能這樣做:
MyBuilder<Foo> myBuilder = new MyBuilder<Foo>(); // compiler error here
的錯誤是構造MyBuilder<Foo>()
是不確定的。
爲什麼構造函數簽名中的? –
@HunterMcMillen在構造函數簽名中是有效的。如何定義ArrayList ? –
fastcodejava
因爲這個「T」不是那個「T」。 T只是某種類型的「佔位符」。私人決賽中的T類 clss;與構造函數參數中的T無關。 –