java - 为什么java中的静态方法应该只接受其方法内的最终或非最终变量,而不是静态的?

标签 java android

为什么 java 中的静态方法应该只接受其方法内的最终或非最终变量,而不是静态的?

例如我有以下方法:

public static void myfunc(int somethig)
{                                      
  int a=10;                            
  final int b=20;                      
  static int c=30;   //gives Error why?
}

最佳答案

The question is: why not?

考虑一下:静态局部变量意味着什么?

我建议唯一的合理意思是:

public class Foo {
    static int bar = 21;
    public void foo() {
        static int bar = 42;  // static local
        return bar;
    }
}

等同于:

public class Foo {
    static int bar = 21;
    private static foo$bar = 42;  // equivalent to static local
    public void foo() {
        return bar;
    }
}

换句话说,(假设的)静态局部变量等同于可见性规则略有不同的常规静态属性。

Java 语言的设计者可能考虑到了这一点,并决定静态局部变量所增加的实际值(value)太少,因此不值得将它们包含在语言中。 (当然,这就是我投票的方式。)

关于java - 为什么java中的静态方法应该只接受其方法内的最终或非最终变量,而不是静态的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3717388/

相关文章:

android - 人脸检测不检测人脸,Android

java - 动态改变imageView中的位图,android

android - Gradle同步问题:错误:原因:无法找到到请求目标的有效证书路径

java - 对象创建的细微差别会导致完全不同的对象生命周期?

java - 递归函数中的错误

android - 我们可以在服务中运行语音识别吗?

android.database.sqlite.SQLiteException : near "Order": syntax error (code 1):

java - 无法从此代码接收位置坐标?

java - 如何从org.jdom.Document中的xml对象获取数据?

java - 类扩展抽象类实现接口(interface)