Вопросы по теме '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 просмотров
schedule
06.10.2022
Неупорядоченная запись для блокировки с двойной проверкой
В примерах, упомянутых для записи не по порядку для сценариев блокировки с двойной проверкой (ссылка: Статья IBM и Статья Википедии )
Я не мог понять простую причину того, почему Thread1 выйдет из синхронизированного блока до того, как...
1185 просмотров
schedule
10.12.2022
Загрузка класса против инициализации класса
Я всегда думал, что загрузка класса и инициализация класса являются синонимами и обычно происходят по требованию, когда инициализируемый/загружаемый класс используется каким-то образом или другое впервые . Но теперь я знаю из этот ответ на 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 просмотров
schedule
31.08.2022
Наборы значений расширенной экспоненты в 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 просмотров
schedule
17.07.2023
В чем может быть проблема с предоставлением этого ключевого слова для лямбда-тела 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 просмотров
schedule
10.10.2022