我有一些功能,如:
在字符串上输入并修改并返回字符串
将字符串(保存XML)作为输入并解析它并返回对象的函数。
例如:
public class MyUtils{
public static modifyString(String str){
return someString;
}
public MyObject parseString(String xml){
//Parse XML
return obj;
}
}
答案 0 :(得分:3)
是的,只需添加static
关键字即可。使用您给出的示例,您可以像这样调用modifyString
:
MyUtils.modifyString(“一些字符串数据”);
在您的示例中,因为您没有修改存储在类中的任何内容,所以它将取决于是否有多个内容正在访问传入的内容。类本身应该是线程安全的。
它们是不同的东西,当你需要使用实例数据时,你应该使用单例,也就是说,当你需要你的类有属性或状态时。对于实用程序函数,更好的选择通常是使用静态方法,因为您不太可能具有与实用程序函数关联的状态。
答案 1 :(得分:0)
是的,你应该。
静态方法没有特定问题;但是,如果您的方法引用静态字段或可变参数,则可能与其他线程发生冲突。如果它引用静态字段,请考虑使用单例模式。
当类具有自己的状态时,使用单例模式进行管理,特别是从客户端隐藏此类状态。如果该类只包含无状态实用程序函数,则可以使用静态方法,而不需要使用单例模式。
答案 2 :(得分:0)
是的,您可以将这些方法设为静态。实际上,这些“实用程序类”通常是使用静态方法创建的。
不,这些方法不是线程安全的,线程可以中断方法执行并更改当前正在处理的值。
当您只需要一个类的一个实例时,您应该使用单例。一个很好的例子是记录类,它记录有关程序执行的信息。在这种情况下,使用单例是没有意义的,因为你将使用静态方法。