Учитывая следующие настройки:Java дженериков Enum подтипов Интерфейс
public class TestType {
public static void main(String[] args) {
List<Constants> list = new ArrayList<>();
accept(list); //Does not compile
}
static void accept(Iterable<MyInterface> values) {
for (MyInterface value : values) {
value.doStuff();
}
}
}
interface MyInterface<T> {
T doStuff();
}
enum Constants implements MyInterface<Integer> {
ONE, TWO, THREE;
@Override
public Integer doStuff() {
return ordinal();
}
}
Почему не компилятор принимать список в качестве параметра, чтобы принять()?
List
распространяется Iterable
через Collection
, так что это не проблема.
С другой стороны, компилятор говорит мне, что incompatible types: java.util.List<enums.Constants> cannot be converted to java.lang.Iterable<enums.MyInterface>
Но Константы ЯВЛЯЕТСЯ MyInterface ... не так ли?
Это действительно работает. Примите ответ, как только SO дайте мне. Большое спасибо! – tannerli