java util类

时间:2012-07-16 11:16:07

标签: java

java中的Util类可以用两种方式构建

class Utils  
{   
  public static ReturnType someUtilMethod(  
 // ...   
}    

并通过

执行util方法
Utils.someUtilMethod(...);

或者我可以制作

class Utils  
{  
  public Utils(){}     
  public ReturnType someUtilMethod(  
 // ...   
}  

并通过

执行util方法
new Utils().someUtilMethod(...)  

哪种方式更好?这种方式之间是否存在一些差异?

5 个答案:

答案 0 :(得分:11)

一般来说,Util类包含实用程序方法,它不需要存储要处理的Object状态,所以static方法很适合那里

答案 1 :(得分:2)

效用函数应始终为static,除非由于某种原因它依赖于某些其他变量的 state ,并且这些变量需要在调用之间记住。

后者应该几乎不会发生,尽管像伪随机数生成器这样的事情可能是个好例子。

Math函数是效用函数的一个很好的例子。当您致电Math.sin()时,结果仅取决于提供的参数 。没有涉及“状态”,因此不需要创建对象。

答案 2 :(得分:1)

静态访问将是一种更好的方法,就像Util类保持方法一样,它们不关心对象的属性。

另一个例子是数学课程

  • 数学课有无实例变量

  • 并且私有构造函数,因此无法创建任何对象。

  • 因此在Math类中,使用像Math.PI这样的静态访问是合适的。

答案 3 :(得分:0)

如果使用仅具有静态方法的类,则无需在每次需要时使用它来实例化对象,从而节省了一行代码和一些内存。只记得将默认构造函数设为私有,这样就没有人无意中实例化它了!

答案 4 :(得分:0)

实用程序类只是在Java中以语法形式保存全局函数的地方。

“实用工具类”一词未涵盖您的第二个示例。该概念的定义包括该类的不可实例化。

拥有实例方法的原因是动态方法调度(实现多态),或者可能持有一些非全局状态。但是,正如我所说,那么你将超出“实用类”一词的范围。