可以禁用Java自动装箱吗?

时间:2014-10-26 00:25:08

标签: java autoboxing

"泛型(更新)" 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; }
}

并声明:

由于它的方法接受或返回一个Object,只要它不是原始类型之一,你就可以自由地传入它。

我传递给set方法的每个原语都可以在没有编译错误的情况下工作。有没有办法阻止自动包装自动包装原语如果我想让它破坏?更一般地说:有没有办法手动防止自动装箱?我使用的是Java 7。

2 个答案:

答案 0 :(得分:4)

不,没有。在预期引用类型的地方提供的基本类型将自动装箱(假设类型匹配)。

答案 1 :(得分:4)

  

有没有办法手动阻止自动装箱?

唯一确定的方法是在引入自动装箱时使用Java早期版本的Java 5。那将是一个非常糟糕的主意。

(或者可能使用指定Java 1.4源代码兼容性的“-source”标志进行编译。虽然你也会丢失很多其他现代Java语言特性:泛型,枚举等。)

自动装箱/拆箱是现代Java语言的基本组成部分,无法随意关闭和打开。