获取通用接口的错误:接口Observer不能使用不同的参数多次实现:

jax*_*jax 8 java gwt observer-pattern

我在编写GWT应用程序时在Eclipse中收到此错误

接口Observer不能使用不同的参数多次实现:Observer <CompositeListData>和Observer <DialogBoxAuthenticate>

public class CompositeWordLists extends Composite implements Observer<DialogBoxAuthenticate>, Observer<CompositeListData>
Run Code Online (Sandbox Code Playgroud)

这是界面

public interface Observer<T> {
    public void update(T o);
}
Run Code Online (Sandbox Code Playgroud)

这是正确的吗?如何在不必为每个可能的事件创建大量Observer类的情况下解决此问题?

Sal*_*cha 3

由于类型擦除,您无法两次实现相同的接口(使用不同的类型参数)。因此,您收到的 eclipse 错误是正确的。

您可以为所有可能的“T”添加基类,这可能会受到限制并且没有用,具体取决于这些类的范围。而且,您请求了一个解决方案,可以防止您为每个可能的事件创建大量观察者类(我假设是接口),我不知道您还能如何在不影响编译时安全的情况下做到这一点。

我会建议以下

interface Observer<T>{
    public void update (T o);
}

interface DialogBoxAuthenticateObserver extends Observer<DialogBoxAuthenticate>{
}
Run Code Online (Sandbox Code Playgroud)

代码混乱并不可怕,如果将它们全部放在一个文件中,它们将很容易引用和维护。希望我有帮助

编辑:在谷歌上进行一番挖掘后(这让我回到了stackoverflow!),你的问题以不同的方式提出,并在这里得到了类似的回答

  • 你也不能这样做。您将得到相同的多个接口错误。 (8认同)