參數化類時是否可以指定默認類型? 例子:在泛型中使用Java進行可選參數化
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class> {
// code
}
// parametrized imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1, ClassThatExtendsPar2Class> {
// code
}
// non-parametrized imlementation class
public class RealClass extends AbsClass {
// code
}
我在執行
我必須指定NONE或所有參數。有可能使第二個參數非強制性,如下所示:
// abstract class
public abstract class AbsClass<T1 extends Par1Class, T2 extends Par2Class : default Par2Class > {
// code
}
// parametrized only mandatory imlementation class
public class RealClass extends AbsClass<ClassThatExtendsPar1> {
// code
}
從我的角度來看有這樣做的一個很好的理由。因爲我的「可選參數」(T2擴展Par2Class)是一個我們用作Value對象的類,並且在其他類的批次中被擴展。如果我不指定T2,我只使用ValueObject的默認方法。如果我指定,我需要特定的方法,而不必投。 我想在繼承順序中引入另一個類,但我對可選參數化很好奇。謝謝。 – davorp 2009-09-07 06:17:18
我可能是錯的,但我認爲有這樣的用例。在C++中,允許使用默認的模板類型,可以使用它們。用於爲STL類型提供默認版本的內存分配器。 – Rom1 2011-07-18 08:18:18
如果SwingWorker的中間類型參數與結果參數相同,那麼典型的良好用法就是SwingWorker的中間類型參數。 – 2012-02-27 13:00:52