gpt4 book ai didi

java - 从通用抽象类java返回子类

转载 作者:行者123 更新时间:2023-11-30 06:18:44 27 4
gpt4 key购买 nike

所以,我有这个表示 Input 类型对象的抽象类 -

public abstract class Input<E>

我有两个扩展它的类,一个是 ButtonInput,另一个是 TextInput。两者都扩展 Input 所以它并不重要。我将使用 TextInput 来解释。
这是 TextInput 类的定义:

public class TextInput extends Input<TextInput>

我想做的是将 this 返回为 E(在本例中为 TextInput)-

public E setTextColor(Color color) {
this.colorText = color;
return (E)this;
}

所以,如果我调用例如:

new TextInput().setColor(Color.black)

它应该返回 TextInput。它正在工作,但显示以下警告 -

warning: [unchecked] unchecked cast
return (E) this; required: E
found: Input
where E is a type-variable:
E extends Object declared in class Input

关于以下代码行 -

 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;
}
}

关于java - 从通用抽象类java返回子类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24104182/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com