Я не могу понять, почему метод2 не компилируется, тогда как метод1 компилируется. Я использую Eclipse с JavaSE 1.7, и я получил следующую ошибку в методе2:
Несколько маркеров в этой строке
Тип Enum <T> не является интерфейсом; он не может быть указан как ограниченный параметр
Связанное несоответствие: тип T не является допустимым заменителем ограниченного параметра < E расширяет Enum < E → типа Enum <E>
public class Test {
public interface SomeInterface {
}
public static <T extends Enum<T> & SomeInterface> T method1() {
return null;
}
public static <T extends SomeInterface & Enum<T>> T method2() {
return null;
}
}