【发布时间】:2009-05-17 12:40:09
【问题描述】:
在包装类中不提供无参数构造函数的理由是什么?我知道它们天生就是为 Wrapping 原始类型而构建的,所以正确的方法是为构造函数提供原始类型。
但是,考虑到原始类型具有无参数构造函数,为什么它们没有呢?
此外,如果它们有无参数构造函数,它们可以被实例化为T.class.newInstance()。但是,由于newInstance() 需要无参数构造函数,因此这不适用于包装类。
【问题讨论】:
-
您的术语不正确。当您不提供无参数构造函数时,编译器会提供默认构造函数。见java.sun.com/docs/books/tutorial/java/javaOO/constructors.html
-
这并不完全不正确。 “包装”类没有默认构造函数,因为它们的源代码中都至少有一个构造函数。
-
@John - 你自己的引用说你是不正确的:“编译器会自动为任何没有构造函数的类提供无参数的默认构造函数。”编译器只为没有构造函数的类提供无参数 ctor。
-
duffymo:不,我认为参考文献与约翰和 JLS 一致。
-
@Tom 我认为@duffymo 是对的。仅当您根本不提供构造函数时才提供默认构造函数。包装类没有提供默认构造函数,因为它们已经有一个构造函数。