Java学习笔记-04通过私有构造器强化不可实例化的本领[Java编程]
本文“Java学习笔记-04通过私有构造器强化不可实例化的本领[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:
有一些工具类(utility class)不但愿被实例化,实例对它没有任何意义.但是,在贫乏显式构造器的情形下,编译器会自动供应一个公有的、无参的缺省构造器(default constructor),关于用户而言,这个构造器与其他的构造器没有任何辨别.在已发行的API中常常可以看到一些被无意识实例化的类.
计划通过将类做成抽象类来强迫该类不可被实例化,这是行不通的.该类可以被子类化,并且该子类也可以被实例化.这样做乃至会误导用户,认为这种类是专门为了担当而计划的.然后,有一些简单的习惯用法可以确保类不可被实例化.我们只要让这个类包含私有构造器,它就不能被实例化了:
[java]
// Noninstantiable utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
}
// Noninstantiable utility class
public class UtilityClass {
// Suppress default constructor for noninstantiability
private UtilityClass() {
throw new AssertionError();
}
}
由于显式的构造器是私有的,所以不可以在该类的外部拜候它.这种习惯做法也有副作用,它使得一个类不能被子类化.全部的构造器都必须显式地或隐式地调用超类(superclass)构造器,在这种情形下,子类就没有可拜候的超类构造器可调用了.
摘自 horsttnann的专栏
以上是“Java学习笔记-04通过私有构造器强化不可实例化的本领[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:
本文地址: | 与您的QQ/BBS好友分享! |