gpt4 book ai didi

Java-监听器、泛型和继承

转载 作者:行者123 更新时间:2023-12-01 06:09:14 28 4
gpt4 key购买 nike

这可能是一个简单的问题,但我没有看到它。

我有一个界面

public interface RenderableListener<T extends Renderable>{
public void update(T element);
}

我有一个父类(super class) Renderable 和一个扩展 Renderable 的示例类 Foo。

现在,在创建 Foo 类时,我给出一个接口(interface)实例作为监听器/观察者或其他。

Foo foo = new Foo(new RenderableListener<Foo>(){
public void update(Foo element){}
});

到目前为止,一切正常,并且一切正常。

但现在在 Foo 类本身中,当我尝试像这样调用接口(interface)时:

public class Foo extends Renderable {
private final RenderableListener<? extends Renderable> listener;
public Foo(RenderableListener<? extends Renderable> listener){
this.listener = listener;
}
public void update(){
listener.update(this);
}
}

我收到此错误:

error

现在我遇到的问题是 SpriteRenderable,所讨论的参数是扩展 Renderable。我错过了什么?

编辑:这背后的想法是我可以为每个扩展 Renderable 的类使用一个接口(interface)实现(并且会有很多)。

最佳答案

您的接口(interface)规定 update 方法有一个参数,而集成到 Foo 类中的 update 方法没有参数。

在 RenderableListener 接口(interface)中将 update(T element) 更改为:

public void update();

这样,在 Foo 中创建的方法就与 RenderableListener 中提供的规范相匹配。

关于Java-监听器、泛型和继承,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38576237/

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