Вопросы с тегом 'jls'

Спецификация языка Java является окончательной технической ссылкой на язык программирования Java.
17 отв.

Почему x == (x = y) не совпадает с (x = y) == x?

Рассмотрим следующий пример: class Quirky { public static void main(String[] args) { int x = 1; int y = 3; System.out.println(x == (x = y)); // false x = 1; // reset System.out.println((x = y) == x); // t...
12 дек. '18 в 22:11
15 отв.

Почему нет статических методов в интерфейсах, но статические поля и внутренние классы в порядке? [Предварительно Java8]

Здесь было задано несколько вопросов о том, почему вы не можете определять статические методы в интерфейсах, но ни один из них не затрагивает базовую несогласованность: почему вы можете определять статические поля и статические внутренние типы в инте...
24 сент. '08 в 22:19
4 отв.

Почему Java связывает переменные во время компиляции?

Рассмотрим следующий пример кода class MyClass { public String var = "base"; public void printVar() { System.out.println(var); } } class MyDerivedClass extends MyClass { public String var = "derived"; public void print...
06 сент. '15 в 14:14
1 отв.

Порядок выполнения настроек параметров в Java?

Учитывая следующий вызов функции в C: fooFunc( barFunc(), bazFunc() ); Порядок выполнения barFunc и BazFunc не указан, поэтому barFunc() может быть вызван до bazFunc() или bazFunc() до barFunc() в C. Указывает ли Java порядок выполнения выраже...
04 февр. '10 в 20:16
10 отв.

Как создать литерал класса известного типа: Class <List <String>>

Возьмите следующее: public Class<List<String>> getObjectType() { // what can I return here? } Какое выражение класса буквально можно вернуть из этого метода, который будет удовлетворять дженерикам и компилировать? List.class не бу...
06 янв. '10 в 13:45
3 отв.

Чувствительность к классу Java-классов

Если вы пишете два открытых Java-класса с одним и тем же именем без учета регистра в разных каталогах, то оба класса не могут использоваться во время выполнения. (Я тестировал это на Windows, Mac и Linux с несколькими версиями JSM HotSpot.Я не удивлю...
05 июня '12 в 5:26
3 отв.

Лямбда-выражение и метод перегружают сомнения

ОК, поэтому перегрузка метода - это плохое дело и торговля;. Теперь, когда это было разрешено, допустим, что я действительно хочу перегрузить метод следующим образом: static void run(Consumer<Integer> consumer) { System.out.println("consum...
02 мая '14 в 17:43
2 отв.

Если вы переписываете поле в подклассе класса, подкласс имеет два поля с тем же именем (и другого типа)?

У меня есть 3 класса: public class Alpha { public Number number; } public class Beta extends Alpha { public String number; } public class Gama extends Beta { public int number; } Почему выполняется компиляция следующего кода? И почем...
23 февр. '12 в 17:30
5 отв.

Является ли "public static final" избыточным для константы в интерфейсе Java?

Этот код: interface Config { int MAX_CONN = 20; } скомпилирован и работал так, как я ожидал. Похоже, это то же самое, что: interface Config { public static final int MAX_CONN = 20; } Является ли "public static final" избыточным для конс...
11 июля '13 в 15:02
4 отв.

Anonymous-Inner классы, показывающие нежелательный модификатор

Насколько я понимаю, следующий код должен был напечатать true. Однако, когда я запустил этот код, он печатает false. Из документов Java анонимных классов 15.9.5. : Анонимный класс всегда неявно завершен public class Test { public static void...
03 янв. '19 в 12:10
3 отв.

Возвращаемое значение оператора присваивания в параллельном коде

Учитывая следующий класс: class Foo { public volatile int number; public int method1() { int ret = number = 1; return ret; } public int method2() { int ret = number = 2; return ret; } } и если несколько потоков, вызываю...
12 окт. '12 в 3:39
2 отв.

Является ли `1/0` постоянным выражением в Java?

Насколько я понимаю Java 8 JLS выражение (1/0) считается постоянным выражением, но когда я пытаюсь скомпилировать следующая программа с OpenJDK 8 Я получаю сообщение об ошибке public class Switch { public static void main(String[] args) { ...
03 июля '15 в 15:20
5 отв.

Java в операторе

В миллионный раз мне бы хотелось использовать оператор IN в Java, аналогичный оператору IN в SQL. Это может быть просто реализовано как синтаксический сахар компилятора. Итак, это if (value in (a, b, c)) { } else if (value in (d, e)) { } ... дейс...
12 сент. '11 в 18:50
3 отв.

Верно ли, что каждый внутренний класс требует вмещающего экземпляра?

Термин внутренний класс обычно воспринимается как "вложенный класс, который требует вмещающего экземпляра". Однако JLS утверждает следующее: 8.1.3. Внутренние классы и экземпляры Enclosing [...] Внутренние классы включают локальные (§14.3), аноним...
09 дек. '13 в 13:58
5 отв.

Какие части JLS оправдывают возможность бросить проверенные исключения, как если бы они были сняты?

Недавно обнаружил и сообщил о факте, что можно пропустить проверенное исключение через javac-компилятор и выбросить его там, где его не нужно бросать. Это компилируется и запускается на Java 6 и 7, бросая предложение SQLException без throws или cat...
25 сент. '12 в 12:59