Objects.requireNonNull вставляется перед ссылками на методы в современных реализациях Javac.JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Objects.requireNonNull вставляется перед ссылками на методы в современных реализациях Javac.

Сообщение Anonymous »

В какой момент (и почему) создатели Java решили заставить javac вставлять Objects.requireNonNull() перед нестатическими ссылками на этот метод?
Исходный файл:
import java.util.function.Supplier;

class MethodReferenceDemo {
public static void main(String[] args) {
String message = null;
Supplier messageLengthSupplier = message::length;
System.out.print("Message length: ");
System.out.print(messageLengthSupplier.get());
}
}

Скомпилировано с помощью javac JDK8 (после декомпиляции):
import java.util.function.Supplier;

class MethodReferenceDemo {
public static void main(String[] var0) {
Object var1 = null;
Supplier var2 = var1::length;
System.out.print("Message length: ");
System.out.print(var2.get());
}
}

Скомпилировано с помощью javac JDK17:
import java.util.Objects;
import java.util.function.Supplier;

class MethodReferenceDemo {
public static void main(String[] var0) {
Object var1 = null;
Objects.requireNonNull(var1);
Supplier var2 = var1::length;
System.out.print("Message length: ");
System.out.print(var2.get());
}
}


Подробнее здесь: https://stackoverflow.com/questions/681 ... ac-impleme
Ответить

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

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

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

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

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