Проблема реализации интерфейса Java - PullRequest
1 голос
/ 25 мая 2011

У меня проблема с сетами. Обязательный java.lang.String найден String ... Что я могу там сделать?

public interface Node {
        public <V> V get();
        public <V> void sets(V value);
    }

public enum MIBNodes implements Node {

    TEST {
         private String e;
        @Override
        public String get() {
            return "aa";
        }

        @Override
        public <String> void sets(String value) {
           e=value;
        }




    };


};

UPDATE
Каждый экземпляр перечисления, такой как TEST, TEST1 ... может иметь различный тип .. String, Integer или любой другой ... Так что public enum MIBNodes implements Node { не может стать public enum MIBNodes implements Node<String> {

1 Ответ

4 голосов
/ 25 мая 2011

Это проблема:

@Override
public <String> void sets(String value) {
        ^^^^^^
    e=value;
}

Здесь String - это переменная типа (переопределение V), а не java.lang.String.И я не думаю, что вы можете это исправить, не изменив свой дизайн:

public interface Node<V> {
    public V get();
    public void sets(V value);
}

И в случае, если вы хотите, чтобы ваш enum был общим: это невозможно.Различные элементы перечисления не могут реализовать один и тот же интерфейс с разными общими параметрами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...