我经常发现自己将类中的常见行为提取到helper/utility类中,这些类只包含一组静态方法.我经常想知道我是否应该将这些类声明为抽象类,因为我无法真正想到实例化这些类的正当理由?
优点和缺点是宣布这样一个类是抽象的.
public [abstract] class Utilities{ public static String getSomeData(){ return "someData"; } public static void doSomethingToObject(Object arg0){ } }
Outlaw Progr.. 73
你可以声明一个什么都不做的私有构造函数.
声明类"abstract"的问题在于abstract关键字通常意味着该类旨在进行子类化和扩展.这绝对不是你想要的.
你可以声明一个什么都不做的私有构造函数.
声明类"abstract"的问题在于abstract关键字通常意味着该类旨在进行子类化和扩展.这绝对不是你想要的.
不要打扰它们是抽象的,而是包含一个私有的无参数构造函数来防止它们被实例化.
对于那些感兴趣的人来说比较点:在C#中你会声明这个类是静态的,使它在编译形式中是抽象的和密封的(Java的最终版),而根本没有任何实例构造函数.这也使得声明该类型的参数,变量,数组等成为编译时错误.便利.
我没有声明实用程序类抽象,我声明它们是final并使构造函数私有.这样它们就不能被子类化,也无法实例化.
public final class Utility { private Utility(){} public static void doSomethingUseful() { ... } }