例如,我有一些课程:
public class Test<T> {
public T setField() {
return this;
}
}
当然,这是一个不正确的类。但是我可以再写些吗?(没有错误)。PS我知道我可以编写一个抽象方法在子类中重写它。但是我只问通用类(仅在其类体内)。
T
仅当使用递归类型绑定时,才将其强制转换为有意义。仍然需要添加强制转换并禁止显示警告:
abstract class Test<T extends Test<T>> {
@SuppressWarnings("unchecked")
public T setField()
{
return (T)this;
}
}
定义派生类,例如:
public class DerivedTest extends Test<DerivedTest> { ... }
现在这可以在客户端代码中不需要任何强制转换的情况下运行:
DerivedTest d = new DerivedTest().setField();
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句