How can I create an utility class?
例如,我想用实用方法创建一个类
1 2 3 4 5 6 7 |
创建实用程序类的最佳方法是什么?
我应该使用私有构造函数吗?
我应该将实用程序类设置为抽象类吗?
我应该什么都不做吗?
对于Java中的完全无状态效用类,我建议将类声明为EDCOX1,3和EDCOX1,2,并且有一个私有构造函数来防止实例化。
该类应包含所有
应该为类指定一个与其所提供的实用程序集相对应的名称(如果该类要提供大量未分类的实用程序,则为"util")。
类不应包含嵌套类,除非嵌套类也是一个实用程序类(尽管这种做法可能很复杂,并且损害可读性)。
类中的方法应具有适当的名称。
仅由类本身使用的方法应是私有的。
类不应具有任何非最终/非静态类字段。
其他类也可以静态导入类以提高代码可读性(这取决于项目的复杂性)。
例子:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | public final class ExampleUtilities { // Example Utility method public static int foo(int i, int j) { int val; //Do stuff return val; } // Example Utility method overloaded public static float foo(float i, float j) { float val; //Do stuff return val; } // Example Utility method calling private method public static long bar(int p) { return hid(p) * hid(p); } // Example private method private static long hid(int i) { return i * 2 + 1; } } |
也许最重要的是,每个方法的文档应该是精确的和描述性的。很有可能这个类中的方法会经常使用,并且有高质量的文档来补充代码。
根据Joshua Bloch(有效Java),您应该使用总是抛出异常的私有构造函数。这最终会阻止用户创建Util类的实例。
不建议将类标记为abstract,因为is abstract建议读者将类设计为继承。
我将创建类
因此类不能扩展,方法可以由
使类
因此,在这里添加私有构造函数是更好的选择。您还应该使类