java - 为什么Java中没有局部静态变量?

标签 java oop static

在 C/C++ 中,我们使用静态局部变量来维护方法的状态。但是为什么Java不支持呢?

是的,我可以为此目的使用静态字段。但是创建一个只维护一个方法状态的字段是不是有点奇怪?

最佳答案

你找到了唯一的解决办法。

Java 放弃了 C++ 的许多复杂性,这就是其中之一。

作用域为函数的静态变量在并发的情况下会对你做一些讨厌的事情(例如,strtok 是一个众所周知的讨厌的变量,与 pthread 一起使用,正是出于这个原因)。

一般来说,你想要的是一个有状态的对象。有问题的函数应该有一个对象级变量。然后,您可以创建每个都维护状态的实例。

更容易理解/维护/等等。

如果您确实需要将状态保持为单例,那么静态字段就是它。

关于java - 为什么Java中没有局部静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12274375/

相关文章:

python - Python中的空类对象

java - 在IntelliJ中,如何自动将getter/setter从静态更改为非静态

java - 在 Java 8 中,如何在我的环境中不对其进行硬编码来获取我的主机名?

java - 查找使用通配符属性注册的 OSGI 服务

java - Java (JIT) 可以内联递归方法吗?

java - Apache Ant 'Build.xml' > 由于 '@BeforeClass' 而失败

performance - MATLAB 按值传递与按对象传递

java - Java 构造函数可以返回已存在的相同类型的对象吗?

java - Drools 引用静态场

java - 子类中的静态方法与父类(super class)中的方法具有相同的签名