作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有以下类(class):
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
)
最佳答案
使第二个实现扩展
第一个实现。
abstract class MyAbstract2<T extends String> extends MyAbstract<T>
{
T upperVal_;
MyAbstract(T val)
{
super(val);
upperVal_ = val.toUpperCase();
}
@Override
T getVal()
{
return upperVal_;
}
}
关于java - 抽象泛型类的不同实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7825614/
我是一名优秀的程序员,十分优秀!