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

Java: разрешение времени компиляции и наиболее конкретный метод
Перегруженные функции compute1() , compute2() и compute5() вызывают ошибки компиляции, если вы попытаетесь использовать их ниже: package com.example.test.reflect; class JLS15Test2 { int compute1(Object o1, Integer i, Integer j) {...
227 просмотров
schedule 15.03.2023

почему Integer.MAX_VALUE + 1 == Integer.MIN_VALUE?
System.out.println(Integer.MAX_VALUE + 1 == Integer.MIN_VALUE); правда. Я понимаю, что целое число в Java 32-битное и не может превышать 2 31 -1, но я не могу понять, почему добавление 1 к его MAX_VALUE приводит к MIN_VALUE , а не к...
40533 просмотров

Неупорядоченная запись для блокировки с двойной проверкой
В примерах, упомянутых для записи не по порядку для сценариев блокировки с двойной проверкой (ссылка: Статья IBM и Статья Википедии ) Я не мог понять простую причину того, почему Thread1 выйдет из синхронизированного блока до того, как...
1185 просмотров

Загрузка класса против инициализации класса
Я всегда думал, что загрузка класса и инициализация класса являются синонимами и обычно происходят по требованию, когда инициализируемый/загружаемый класс используется каким-то образом или другое впервые . Но теперь я знаю из этот ответ на SO...
1789 просмотров
schedule 13.04.2023

Почему вызов родительского конструктора не является первым вызовом в сгенерированном компилятором конструкторе для класса Inner?
Рассмотрим следующий класс Test , чтобы продемонстрировать поведение внутреннего класса в Java. Основной код находится в методе run . Остальное — это просто сантехнический код. public class Test { private static Test instance =...
86 просмотров
schedule 08.10.2023

Неизменяемые поля + доступ к первому объекту из другого потока (java)
Я некоторое время работал над одним приложением серверного типа и обнаружил, что его дизайн бросает вызов тому, как я вижу когерентность памяти (так сказать) в Java. Это приложение использует NIO, поэтому существует ограниченное количество...
740 просмотров

Наборы значений расширенной экспоненты в Java
Согласно разделу 4.2.3 JLS, конкретная реализация Java может поддерживать 1) набор значений расширенной экспоненты с плавающей запятой 2) набор значений двойной расширенной экспоненты Но это не обязательно. Пример: Если у нас есть...
181 просмотров
schedule 01.05.2023

Ссылка на унарный статический метод неоднозначна между типами параметров Function и BiFunction.
Рассмотрим следующий сокращенный тестовый пример: import java.util.AbstractList; import java.util.Collection; import java.util.Iterator; import java.util.List; import java.util.function.BiFunction; import java.util.function.Function; public final...
249 просмотров
schedule 26.06.2022

Где я могу найти спецификацию для метода Class.getProtectionDomain().getCodeSource()?
Независимо от того, использую ли я Oracle JDK, IBM JDK или Open JDK (все версии 8), я заметил, что следующий метод всегда возвращает null , когда рассматриваемый класс является классом библиотеки JDK: Class clazz = Integer.class;...
829 просмотров
schedule 15.01.2023

Почему это объявление переопределяющего метода вызывает ошибку компиляции?
Следующий код: class Parent { public void method(List parameter){ } } class Child extends Parent { public void method(List<String> parameter) { } } не удается скомпилировать со следующей ошибкой: Parent.java:12:...
73 просмотров
schedule 15.05.2022

Есть ли разница при явном указании верхних границ для подстановочных знаков?
Предположим, у меня есть общий class Generic<A extends BaseType> . Есть ли заметная разница, насколько это касается Спецификации языка Java, между следующими двумя объявлениями типов? Generic<?> Generic<? extends BaseType>...
594 просмотров
schedule 29.03.2024

Компилятор Java предпочитает тип `int`, даже если возможны короткие и байты
Я попробовал приведенный ниже код и был поражен, увидев, что моя IDE указала, какой метод будет вызываться... (конечно, путем компиляции). public class Test20 { public static void main(String[] args) { new Test20().m1(3); }...
57 просмотров
schedule 06.01.2023

Почему мы не можем получить доступ к статическому контенту через неинициализированную локальную переменную?
Взгляните на код ниже: class Foo{ public static int x = 1; } class Bar{ public static void main(String[] args) { Foo foo; System.out.println(foo.x); // Error: Variable 'foo' might not have been initialized } }...
3951 просмотров

В чем может быть проблема с предоставлением этого ключевого слова для лямбда-тела Java?
Рассмотрим следующие примеры Consumer<Long> f1 = new Consumer<>() { @Override public void accept(Long value) { if (value < 5) { this.accept(value + 1); //this refers to the anonymous context. }...
42 просмотров
schedule 22.05.2022

Что делают подпакеты Java, если они не обеспечивают особых отношений доступа?
Я видел ряд сообщений о переполнении стека и в других местах, где утверждается, что в Java нет концепции подпакетов. Одна вещь, которую часто отмечают, это отсутствие каких-либо особых отношений доступа между пакетом и его подпакетом. Например,...
79 просмотров
schedule 14.08.2022

Найдите пример кода, показывающий, как Java не соблюдает последовательную согласованность
Насколько я знаю, JMM не следует за последовательной согласованностью, и нам нужно ключевое слово volatile, чтобы гарантировать видимость. Типичный пример без SC часто описывают как A = 0; B = 0; --thread 1-- A = 1; B = 1; --thread 2-- if(B ==...
98 просмотров