簡體   English   中英

從通用抽象類Java返回子類

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM