可以禁用 Java 自动装箱吗?

gcb*_*und 4 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; }
}
Run Code Online (Sandbox Code Playgroud)

并指出:

因为它的方法接受或返回一个对象,你可以自由地传入任何你想要的东西,只要它不是原始类型之一。

我传递给 set 方法的每个原语都可以正常工作而不会出现编译错误。如果我确实希望它损坏,有什么方法可以防止自动包装原语的自动装箱?更一般地说:有没有办法手动防止自动装箱?我正在使用 Java 7。

Ste*_*n C 5

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

唯一确定的方法是使用早于 Java 5 的 Java 版本,那时引入了自动装箱。

或者可能使用-source指定 Java 1.4 源兼容性的标志进行编译。注:这是行不通的javacJava中9或更高版本,因为支持-source小于或等于5还未从删除javac

对于实验以外的任何事情来说,做任何一个都将是一个非常糟糕的主意。如果恢复到 Java 1.4 级别,您还会失去许多其他重要的 Java 语言特性;例如泛型、枚举等。

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