2015-06-04 4 views
3

Я столкнулся с примером в книге OCJP. Это говоритПерегрузка оператора в Java (класс оболочки Integer)?

Integer y=new Integer("20"); 
y++; (un-wraps it) 
System.out.println(y); 

Теперь это напечатает 21. Следовательно, это заставляет меня думать, как же компилятор даже не знаю, что на y++ она должна разворачивать его в целое и увеличить его? Целое число - это обычный класс (может быть, класс Wrapper?), Является ли это перегрузкой оператора внутри?

Есть ли способ, который я могу сделать для своего собственного класса, если это возможно?

+1

http://stackoverflow.com/a/408668/2231632 - пожалуйста, посмотрите, поможет ли это объяснение. – prabugp

+0

сделал помощь, спасибо !! – codemania23

ответ

1

Java использует функцию, называемую Autoboxing and Unboxing, чтобы развернуть это целое число и увеличить его. Вы не можете реализовать эту функцию в своих пользовательских классах. Он доступен только для тех классов-оболочек для примитивных типов Java.

+0

спасибо за ответ на мой вопрос, я не знал о autoboxing и unboxing, мог бы у вас подтвердить, что происходит в ==, когда я делаю == на двух объектах, он проверяет его ссылку и когда я делаю == на строках, он проверяет в литеральном пуле? – codemania23

+2

@ codemania23 Пожалуйста, найдите ответы на свои вопросы, вместо того, чтобы задавать несвязанные последующие вопросы в комментариях. –

+0

спасибо за помощь в любом случае :), оцените! – codemania23

Смежные вопросы