java - 如何有效的使用静态方法?

标签 java object static

我从来不太确定我是否正确使用了静态方法。我了解它们是如何工作的。

假设我有一个名为 Player(Java) 的类:

private int money;
private int lot;
private String piece;
private int playerNum;

public Player(String _piece, int _playerNum)
{   
    piece = _piece;
    lot = 0;
    playerNum = _playerNum;
    money = 20000;

}
public int getMoney()
{   
    return money;
}
public int getLot()
{
    return lot;
}
public String getPiece()
{
    return piece;
}

还有一些其他方法+ setter ,但它们特定于我创建的玩家对象,现在假设我有一个如下所示的静态方法:

private static int numOfPlayers;

public static int numPlayers()
{
   return numOfPlayers;
}

这个 numOfPlayers 方法应该放在哪里?

它应该放在我的 Player 类中吗?每次创建玩家对象的新实例时,我是否应该增加 numOfPlayers 变量?(通过构造函数)

或者,我应该在我的 Game 类中将该方法作为非静态方法,并在每次创建新的 Player 时调用该方法。

最佳答案

静态字段和方法应该表示类的无状态属性;即与特定对象无关。

但是要小心使用静态的多线程,因为必须锁定整个类而不仅仅是一个对象。这可能会导致并发瓶颈

至于您的 numOfPlayers,您可能最终会在其他地方开发一个玩家集合,在这种情况下,该函数将是该集合上的方法,而不是玩家类中的方法。

理想情况下,至少在我看来,个人玩家不应该真正关心玩家 Collection 。因此,诸如您提出的静态函数并不是一个好的设计。

关于java - 如何有效的使用静态方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16653002/

相关文章:

c++ - 指向对象数组的指针作为成员覆盖内存

Java:程序启动时出现 ExceptionInInitializerError

java - 为什么在静态初始化 block (继承)之后打印输出

java - 相当于 Ruby :symbol in Java?

Java调用方法使用||

java - setStatusBarColor 不起作用

java - 为什么我们允许在 java 中有一个 final main 方法?

java - 在 Java 中用原语规避代码膨胀的模式

Javascript,设计函数来引用自身

javascript - 为什么我必须先将此 Javascript 对象存储在变量中,然后再将其推送到数组?