这实际上与我之前提出的一个问题有关,但我对这个细节不以为然。我受限于Java 1.4,我想将int
类型转换为Object
。我是否真的需要使用Integer
类对象,或者有一种直接转换它的方法(1.4中没有自动装箱)。这种“手动装箱”的成本是否值得将整个类从第3层导入第1层,从而增加耦合?
答案 0 :(得分:9)
在Java 1.4中没有简单的方法将原语转换为基于对象的双胞胎,但是有一种缓慢而快速的方式。 new Integer(int)
速度很慢,Integer.valueOf(int)
很快。所有其他数字类型也是如此。
在Java 5中,您不需要太多代码,但在内部,编译器会在您使用自动装箱时为您插入valueOf()
的调用。
答案 1 :(得分:4)
在Java 1.4环境中,不能将int转换为Object,因为它不是Object。
Java区分基本类型和引用类型。 int是基本类型。 boolean,byte,char,short,long,float和double也是如此。
引用类型的值是对某个对象的引用。 “对象”是所有对象的根类。
在Java 1.5及之后,自动装箱将引导第二个变量指向一个与原始变量i
保持相同值的Integer对象。
int i = 99;
Object o = (Object) i;