在 C/C++ 中,我们使用静态局部变量来维护方法的状态。但是为什么Java不支持呢?
是的,我可以为此目的使用静态字段。但是创建一个只维护一个方法状态的字段是不是有点奇怪?
最佳答案
你找到了唯一的解决办法。
Java 放弃了 C++ 的许多复杂性,这就是其中之一。
作用域为函数的静态变量在并发的情况下会对你做一些讨厌的事情(例如,strtok 是一个众所周知的讨厌的变量,与 pthread 一起使用,正是出于这个原因)。
一般来说,你想要的是一个有状态的对象。有问题的函数应该有一个对象级变量。然后,您可以创建每个都维护状态的实例。
更容易理解/维护/等等。
如果您确实需要将状态保持为单例,那么静态字段就是它。
关于java - 为什么Java中没有局部静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12274375/