繁体   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