Разрешено ли выбирать статический класс из параметризованного типа в Java?JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Разрешено ли выбирать статический класс из параметризованного типа в Java?

Сообщение Anonymous »

Вот минимальная демонстрация:

Код: Выделить всё

public class OuterStaticNestedDemo {
class Outer {
static class StaticNested {}
}

void qualifiedNew(Outer outer) {
new Outer.StaticNested();
new OuterStaticNestedDemo.Outer.StaticNested();
}
}
Когда я компилирую с помощью javac, возникает ошибка (здесь используется версия 25, но то же самое для версий 11, 17 и 21):

Код: Выделить всё

javac -g -source 25 -target 25 OuterStaticNestedDemo.java
OuterStaticNestedDemo.java:8: error: cannot select a static class from a parameterized type
new Outer.StaticNested();
^
1 error
Когда я компилирую с помощью ecj, он компилируется:

Код: Выделить всё

java -jar ecj-3.44.0.jar -g -source 25 -target 25 OuterStaticNestedDemo.java
Разрешено ли в Java выбирать статический класс из параметризованного типа?

ecj кажется более мягким, чем javac, или это может быть ошибка в любом из двух компиляторов?
Этот вопрос отличается от вопроса: Статический метод в универсальном классе?. Они включают в себя разные части спецификации языка Java: старый вопрос касается запрещенных нестатических ссылок в статическом контексте (что похоже на использование this в статическом методе), а мой вопрос касается выбора статического класса из параметризованного типа в Java. Кроме того, старый вопрос касается ссылки на параметр типа из статического метода. В моем вопросе нет ссылки на параметр типа и статический метод. Ответы на старый вопрос не касаются того, действителен ли конкретный шаблон в моем вопросе или нет. И, наконец, пример кода в старом вопросе не компилируется с ecj, а мой пример — да.

Подробнее здесь: https://stackoverflow.com/questions/798 ... pe-in-java
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»