2014-10-26 2 views
3

В "Дженерики (обновлено)" Java учебник по адресу:Можно отключить автобоксинг Java?

http://docs.oracle.com/javase/tutorial/java/generics/types.html

определяет простой класс Box:

public class Box { 
    private Object object; 

    public void set(Object object) { this.object = object; } 
    public Object get() { return object; } 
} 

и заявляет:

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

Каждый примитив, который я передаю методу набора, работает без ошибки компиляции. Есть ли способ предотвратить автобоксинг, который автоматически обертывает примитив, если я действительно хочу его сломать? И в более общем плане: есть ли способ предотвратить автоматическое оповещение? Я использую Java 7.

+2

Я ответил на этот вопрос, но вы можете объяснить, зачем вам это нужно? –

+0

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

+1

Спасибо за ответ. Я пытался внимательно прочитать учебник по дженерикам, и мне показалось, что на самом деле нет ограничений на то, что вы можете передать методу set: примитивы просто преобразуются в Object (поэтому они * могут * быть переданы методу) и вернулся таким образом с get. Затем я задавался вопросом, существует ли какой-либо «пользовательский контроль» в этом процессе. – gcbound

ответ

4

Есть ли способ ручного предотвращения автобоксинга?

Единственный верный способ использования версии Java ранее Java 5 при вводе автобоксинга. Это было бы очень плохой идеей.

(Или, может быть компиляции с флагом «-source», который определяет совместимость Java 1.4 источника будет делать это хотя бы вы также потеряете много других современных возможностей языка Java:.. Дженериков, перечислений, и так далее)

Autoboxing/unboxing является фундаментальной частью современного языка Java, и его нельзя отключать и использовать по своему усмотрению.

4

Нет, нет. Первоначальный тип, при котором ожидается ссылочный тип, будет автоматически вставлен в поле (при условии соответствия типов).

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