Autoboxing and unboxing - это процессы времени компиляции.
Мы можем проверить с помощью небольшого теста, как описано ниже:
Создание проекта Java, скажем, с именем «Crap». Внутри этого создайте файл .java с ниже содержанием:
public class Crap {
private Boolean crap;
public Boolean getCrap() {
return crap;
}
public void setCrap(Boolean crap) {
System.out.println("lol.. this is crap!!");
this.crap = crap;
}
}
Построить этот проект и экспортировать в виде файла банка, скажет crap.jar.
Теперь создайте еще один проект Java, скажем, с именем «Junk». Добавить crap.jar файл в путь к классам этого проекта, а затем создать файл .java с ниже содержание:
public class Junk {
public static void main(String[] args) {
Crap crap = new Crap();
crap.setCrap(true);
}
}
Теперь построить Junk проект и запустить Junk.java как приложение Java. Он будет успешно работать, и выход будет
lol .. это дерьмо !!
Теперь измените Crap.java, измените булевую дерьмо на boolean, а также соответствующие геттеры и сеттеры. Код будет выглядеть следующим образом:
public class Crap {
private boolean crap;
public boolean getCrap() {
return crap;
}
public void setCrap(boolean crap) {
System.out.println("lol.. this is crap!!");
this.crap = crap;
}
}
Снова создайте этот проект и экспортируйте его как crap.jar. Поместите этот файл crap.jar в путь класса проекта Junk (и удалите предыдущий файл jar из его пути к классам).
Теперь, если вы попытаетесь запустить Junk.java как приложение Java, вы получите ниже StackTrace:
Exception in thread "main" java.lang.NoSuchMethodError: crap.Crap.setCrap(Ljava/lang/Boolean;) at junk.Junk.main(Junk.java:9)
Что вы не понимаете об этом? –
Я бы объяснил более подробно, но я не понимаю, какая часть вам непонятна. Вы знаете, что такое автобоксинг? – Jochen