我有以下课程:
abstract class MyAbstract<T>
{
T val_;
MyAbstract(T val)
{
val_ = val;
}
T getVal()
{
return val_;
}
}
我希望我的抽象类对于T = String具有不同的主体,例如(与我同住):
abstract class MyAbstract<T extends String>
{
T val_;
T upperVal_;
MyAbstract(T val)
{
val_ = val;
upperVal_ = val.toUpperCase();
}
T getVal()
{
return upperVal_;
}
}
我试图获得的结果是,如果我扩展MyAbstract,将使用第二个版本,否则将使用第一个版本。这有可能吗?谢谢!
更新:我希望能够扩展相同的抽象类并做类似的事情:
Type1 extends MyAbstract<Integer>...
和
Type2 extends MyAbstract<String>...
(请注意,我对两种类型都使用
MyAbstract
) 最佳答案
将第二个实现extend
设为第一个。
abstract class MyAbstract2<T extends String> extends MyAbstract<T>
{
T upperVal_;
MyAbstract(T val)
{
super(val);
upperVal_ = val.toUpperCase();
}
@Override
T getVal()
{
return upperVal_;
}
}