2012-01-01 65 views
3

Collections是一个公共类,那么我们可以调用它的隐式默认构造函数。它没有私有构造函数,它会阻止创建对象或强制使用静态工厂方法。当我实例化为new Collections()时,出现“构造函数不可见”的错误。总之为什么我们不能有java.util.Collections类的实例?谢谢。为什么我们不能创建Collections类的实例(不是Collection接口)?

+3

您认为它会做什么? – SLaks 2012-01-01 12:48:30

+0

你想要什么? – fge 2012-01-01 12:49:11

+3

我的java.util.Collections类有一个私有的构造函数! – home 2012-01-01 12:50:00

回答

8

documentation:“这个类完全由运行或返回集合的静态方法组成。”

换句话说,Collections只是一个方法的集合。它的一个例子没有任何意义。它就像数学函数一样:你没有数学实例,只需使用函数。

它不是interface,因为它有具体的方法。

+0

谢谢,哪个概念阻止我们创建Collections类的实例。我同意它是无用的,我只是为了好奇而问。再次感谢。 – Ahamed 2012-01-01 12:50:53

+1

@Ahamed:看到我的评论,有一个私人(不可见)的构造函数 – home 2012-01-01 12:51:26

+1

好奇心是一个完全正确的理由来问一个问题,艾哈迈德! :) – 2012-01-01 12:52:02

4

“构造函数不可见”消息的原因是构造函数是私有的(第73行),或者至少根据this site。正如其他人已经指出的那样,您将如何处理此类的实例,因为它只包含静态方法

// Suppresses default constructor, ensuring non-instantiability. 
private Collections() { 
} 
+0

谢谢。在源代码中,它在那里,但反编译器,这帮助我偷看类里面没有显示私有构造函数。 – Ahamed 2012-01-01 13:01:17

+1

@Ahamed - 那么你使用的反编译器有问题。尝试使用'javap'。 – 2012-01-01 14:13:10

+0

我已经尝试过'javap'命令。它没有显示私有构造函数,不知道为什么,可能是因为它是空构造函数。有一个私有的构造函数,它驻留在类文件中,并防止实例化,但不会显示在反编译器或javap命令:) – Ahamed 2012-01-01 15:53:32

相关问题