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类的情况下解决此问题?
由于类型擦除,您无法两次实现相同的接口(使用不同的类型参数)。因此,您收到的 eclipse 错误是正确的。
您可以为所有可能的“T”添加基类,这可能会受到限制并且没有用,具体取决于这些类的范围。而且,您请求了一个解决方案,可以防止您为每个可能的事件创建大量观察者类(我假设是接口),我不知道您还能如何在不影响编译时安全的情况下做到这一点。
我会建议以下
interface Observer<T>{
public void update (T o);
}
interface DialogBoxAuthenticateObserver extends Observer<DialogBoxAuthenticate>{
}
Run Code Online (Sandbox Code Playgroud)
代码混乱并不可怕,如果将它们全部放在一个文件中,它们将很容易引用和维护。希望我有帮助
编辑:在谷歌上进行一番挖掘后(这让我回到了stackoverflow!),你的问题以不同的方式提出,并在这里得到了类似的回答