Getting error for generic interface: The interface Observer cannot be implemented more than once with different arguments:

后端 未结 3 808
走了就别回头了
走了就别回头了 2020-12-07 01:46

I am getting this error in Eclipse while writing a GWT app

The interface Observer cannot be implemented more than once with different arguments:

相关标签:
3条回答
  • 2020-12-07 01:59

    Not sure this can help, but I came across the same Java compile error today.

    I partially solved my case by extracting all the shared implementation I could get to a parametrized abstract class:

    public enum Example {
        ;
        static interface Observer<T> { public void update (T o); }
        static abstract AbstractObserver<T> implements Observer<T> {
            public void update (T o) { /* shared stuff I can put here */ }
        }
        static Composite extends AbstractObserver<Parameter1> {
            public void update (T o) {
                super(o);
                /* type-specific code here */
            }
        }
        static CompositeWordLists extends AbstractObserver<Parameter2> {
            public void update (T o) {
                super(o);
                /* type-specific code here */
            }
        }
    }
    
    0 讨论(0)
  • 2020-12-07 02:02

    Because of type erasure you can't implement the same interface twice (with different type parameters). So, the eclipse error that you are receiving is correct.

    You could add a base class for all possible "T", which may be limiting and not useful depending on the scope of these classes. And, you have requested a solution that prevents you from creating a multitude of Observer classes (i am assuming interfaces) for every possible event, well I can't see how else you would do that without compromising compile time safety.

    I would suggest the following

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

    The code clutter isn't horrible and if you place them all in one file, they will be easy to reference and maintain. Hope I have helped

    EDIT: After some digging around on google (which pointed me back to stackoverflow!, your question was asked in a different fashion and answered similarly here

    0 讨论(0)
  • 2020-12-07 02:08

    Composite must already implement Observer. Is that what really intended? You want this CompositeWordLists class to observe two ways at once?

    0 讨论(0)
提交回复
热议问题