[英]Return subclass from generic abstract class java
因此,我有一个抽象类,代表一个Input类型的对象-
public abstract class Input<E>
我有两个扩展它的类,一个是ButtonInput,另一个是TextInput。 两者都扩展了Input,所以实际上并不重要。 我将使用TextInput进行解释。
这是TextInput类的防护:
public class TextInput extends Input<TextInput>
我试图做的是(在这种情况下的TextInput)返回此为E -
public E setTextColor(Color color) {
this.colorText = color;
return (E)this;
}
因此,如果我举个例子:
new TextInput().setColor(Color.black)
它应该返回TextInput。 它正在工作,但是显示以下警告-
警告:[未选中]未选中的演员表
返回(E)这个; 必填:E
找到:输入
其中E是类型变量:
E扩展在Input类中声明的Object
关于以下代码行-
return (E) this;
有人知道如何解决吗?
谢谢
这是我过去用来解决抽象生成器模式中此类问题的一种模式。 它依赖于抽象的me()
方法,该方法被重写以返回对具体对象的引用。
abstract class Foo<T> {
protected abstract T me();
public T baz() {
return me();
}
}
class Bar extends Foo<Bar> {
protected Bar me() {
return this;
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.