2014-12-13 1 views
0

У меня есть ниже метод, который возвращает набор перечислимого, содержащий все элементы Types:ява EnumSet, несовместимые типы: статистические выводы переменных Й имеют несовместимые границы

@Override 
public EnumSet<?> groupTypes() { 
    return EnumSet.allOf(Types.class); 
} 

И Types является enum, как показано ниже:

public enum Types implements GroupType { 
    ASG; 
} 

интерфейс GroupType является:

public interface GroupType extends NamedType { 

} 

NamedType интерфейс:

public interface NamedType { 

    String name(); 

} 

Когда компиляции, я получил ошибку ниже:

error: incompatible types: inference variable E has incompatible bounds 
return EnumSet.allOf(Types.class); 
         ^

equality constraints: Types 
    upper bounds: Enum<CAP#1>,Enum<E> 
    where E is a type-variable: 
    E extends Enum<E> declared in method <E>allOf(Class<E>) 
    where CAP#1 is a fresh type-variable: 
    CAP#1 extends Enum<CAP#1> from capture of ? 

ответ

0

Ошибка

Error: incompatible types: inference variable E has incompatible bounds return EnumSet.allOf(Types.class);

говорит вам, что это проблема. Один из способов решить, чтобы изменить подпись, как этот

public EnumSet<? extends NamedType> groupTypes() { 
     return EnumSet.allOf(Types.class); 
    } 

или вы можете просто присвоить EnumSet.allOf(Types.class) переменной, а затем нет необходимости менять сигнатуру метода, как этот

public EnumSet<?> groupTypes() { 
    EnumSet<Types> typeses = EnumSet.allOf(Types.class); 
    return typeses; 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^