[英]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.