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

В Java, почему я не могу написать i++++ или (i++)++?
Когда я пытаюсь написать постфикс/префикс в/декременте, за которым следует пост/префикс в/декременте, я получаю следующую ошибку: Недопустимый аргумент для операции ++/-- . Но, согласно JLS: PostIncrementExpression: PostfixExpression...
4195 просмотров
schedule 29.12.2022

Как RuntimeExceptions не проверяется компилятором, даже если они расширяют класс Exception?
Когда мы создаем CustomException путем расширения класса Exception, оно проверяется компилятором, но даже несмотря на то, что RuntimeExceptions расширяет класс Exception, они не проверяются компилятором . Как это устанавливается в компиляторе. Я...
491 просмотров
schedule 15.12.2022

Разрешается ли переупорядочивание этой инструкции JLS или нет?
Согласно Спецификации языка Java ( Пример 17.4 -1 ) следующий фрагмент (начиная с A == B == 0 )... Thread 1 Thread 2 -------- -------- r2 = A; r1 = B; B = 1; A = 2; ... может привести к r2...
178 просмотров
schedule 08.01.2023

Почему JLS утверждает, что самый большой литерал int равен 2147483648?
JLS 3.10.1. Integer Literals http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.10.1 указывает The largest decimal literal of type int is 2147483648. В то же время эта линия int x = 2147483648; выдает ошибку...
232 просмотров
schedule 24.10.2022

Разъяснение из спецификации Java Janguage
Разве это не должно быть myS.equals("/usr") в этом объяснении из JLS ? Заключительные поля предназначены для обеспечения необходимых гарантий безопасности. Рассмотрим следующий пример. Один поток (который мы будем называть потоком 1)...
109 просмотров
schedule 08.03.2022

Происходит ли это до того, как правило порядка программы работает в конструкторах?
Действительно ли возможно просмотреть частично построенный объект в потоке, созданном в конструкторе, из-за отсутствия синхронизации и утечки этого экземпляра? За исключением случая, когда есть дочерний класс, конечно, или мы делаем неявное...
258 просмотров
schedule 16.06.2023

Лямбда-выражение и метод перегружают сомнения
Итак, перегрузка методов — это плохо™. Теперь, когда это решено, давайте предположим, что я действительно хочу перегрузить такой метод: static void run(Consumer<Integer> consumer) { System.out.println("consumer"); } static...
10061 просмотров
schedule 08.12.2022

Позволяет ли «порядок программы» в Java изменять порядок?
В одной теме у меня есть write a = 0 write a = 1 write volatile flag = 1 Во 2-й теме у меня есть read volatile flag // This always happens after I write volatile flag in thread 1 read a Может ли произойти переупорядочение, чтобы я...
223 просмотров
schedule 06.09.2022

Что содержит заявление?
JLS 14.21 используется в описание правила для недостижимого оператора, содержащегося в каком-либо операторе. Для конкретики приведу цитату: Оператор while может завершиться нормально, если верно хотя бы одно из следующего:...
61 просмотров
schedule 19.06.2023

Почему преобразование в режиме non-strictfp считается потерей информации?
Я понимаю, что преобразование в режиме strictfp используется для переносимости, а не для точности, как указано в этом вопросе . Однако в спецификации языка Java, Java SE 8 Edition говорится, что Расширяющее примитивное преобразование из float...
160 просмотров
schedule 02.01.2023

Правила выделения подтипов наиболее специфичных методов в Java
В §15.12.2.5 Спецификации языка Java они описывают, как Java выбирает наиболее конкретный метод для вызова из списка как доступных , так и применимых методов. Есть одно конкретное замечание, которое я не понимаю, а именно: (1) Тип S...
76 просмотров
schedule 20.02.2024

Назначение эффективной конечной переменной в операторе try/catch
Следующий код не компилируется с javac 1.8.0_144 и ecj: private LongSupplier foo() { long fileSize; try { fileSize = canThrow(); } catch (IOException e) { fileSize = 42; } LongSupplier foo = () -> 1 +...
678 просмотров
schedule 07.07.2022

Разница между аннотациями объявлений и аннотациями типов
Java 8 представила аннотации типов с JSR308. Согласно спецификациям языка Java аннотации типа можно использовать везде, где используется тип, например, в объявлениях, общих аргументах, приведениях и т. д. Я относительно новичок в Java,...
979 просмотров
schedule 24.01.2024

Java: метод Vararg вызывается с явным массивом подклассов
Рассмотрим следующий пример, игнорируя причину, по которой можно было бы это сделать: private static class Original { public String getValue() { return "Foo"; } } private static class Wrapper extends Original { private...
122 просмотров
schedule 16.04.2023

Почему Java запрещает инициализатор массива в качестве аргумента вызова метода?
В Java мы можем определить переменную массива и инициализировать ее следующим образом: int[] prime10 = new int[] { 2, 3, 5, 7 }; В JLS правая часть присваивания называется ArrayCreationExpression . Инициализатор в терминах синтаксиса JLS:...
102 просмотров
schedule 19.04.2024

Является ли экземпляр класса Java singleton?
Согласно Java 8 Language Спецификация §15.8.2 (цитата): [...] Литерал класса оценивает объект Class для именованного типа (или для void), как определено определяющим загрузчиком класса ( §12.2 ) класса текущего экземпляра. [...] В...
188 просмотров
schedule 17.10.2022