我有我想概括兩類:T是什麼類型?
public class General<T> {
T content;
setContent(T content) { ... };
}
public class Specific {
Foo text;
setText(Foo text) { ... };
}
T
可以有三種不同的類型,所有這些類。 Foo
是其中之一,Pair
是另一個。 我要介紹一個抽象超推廣到的屬性的訪問:
public abstract class Superclass {
abstract void setText(Foo text);
}
這兩個類(General
和Specific
)延伸此超類。但現在我已經實現了類General
的制定者一個問題:
public void setText(Foo text) {
if (T is of type Foo) content = (T) text;
if (T is of type Pair) ((Pair)content).setHead(text);
...
}
我有什麼寫的,而不是is of type
? Java中有沒有這樣的表達式在編譯時被評估?
我可以檢查什麼類型的content
是,但我想這不會工作,如果是null。另外,我可以用? extends Object
之類的東西代替T
,但是如何創建(之前)T
的實例呢?
我用Google搜索了一下,但是我找不到這個特定問題的充分答案。
有沒有表達式會在編譯時進行評估,因爲泛型代碼將被共享。相反,你可以像'class GeneralInteger extends General'這樣做,並在其中覆蓋'setText'。 –
你幾乎不能做你想做的事情,而且必須找到另一種方法。其他一些評論已經提出了一些方法來實現它。 –