java - 我可以将实用程序方法设为静态吗?

标签 java static

我有一些功能,例如:

  1. 接受字符串输入并修改并返回字符串的方法

  2. 将字符串(包含 XML)作为输入并对其进行解析并返回对象的函数。

例如:

public class MyUtils{

    public static modifyString(String str){
        return someString;
    }

    public MyObject parseString(String xml){
        //Parse XML
        return obj;
    }
}
  1. 我能否将此类函数设为静态,以便任何人都可以使用它们而无需创建我的类的实例?
  2. 如果两个线程同时调用该函数怎么办?代码是线程安全的吗?如果是/否,如何?
  3. 什么时候应该使用单例对象,什么时候应该使用静态方法?

最佳答案

  1. 是的,只需添加static 关键字。使用您给出的示例,您可以像这样调用 modifyString:

    MyUtils.modifyString("一些字符串数据");

  2. 在您的示例中,由于您没有修改存储在类中的任何内容,因此这取决于是否有多个对象正在访问传入的内容。类本身应该是线程安全的。

  3. 它们是不同的东西,当你需要使用实例数据时,你应该使用单例,也就是说,当你需要你的类有属性或状态时。对于实用函数,更好的选择通常是使用静态方法,因为您不太可能拥有与实用函数关联的状态。

关于java - 我可以将实用程序方法设为静态吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6697010/

相关文章:

java - 手指在屏幕上滑动的灵敏度

python - 在 Python 中仅初始化一次字段

java - 继承类之间的静态方法 - Java

c# - C# 自动实现的静态属性是线程安全的吗?

java - JFrame 始终专注

java - 使用 Axis 调用 soap webservice 从 java 客户端返回对象列表

java - 哈希表列表更新所有字符串值

java - 对家长 Activity 使用静态有什么问题?

java - 为什么不能在方法内部创建非静态类的静态对象?

java - 在设计继承时陷入困境,哪一个是正确的?