为什么java中的静态方法只接受其方法中的final或非final变量,而不是静态?
例如,我有以下方法:
public static void myfunc(int somethig)
{
int a=10;
final int b=20;
static int c=30; //gives Error why?
}
Run Code Online (Sandbox Code Playgroud)
Ste*_*n C 11
问题是:为什么不呢?
考虑一下:静态局部变量意味着什么?
我建议唯一合理的含义是:
public class Foo {
static int bar = 21;
public void foo() {
static int bar = 42; // static local
return bar;
}
}
Run Code Online (Sandbox Code Playgroud)
相当于:
public class Foo {
static int bar = 21;
private static foo$bar = 42; // equivalent to static local
public void foo() {
return bar;
}
}
Run Code Online (Sandbox Code Playgroud)
换句话说,(假设的)静态局部变量将等同于具有略微不同的可见性规则的常规静态属性.
Java语言设计人员可能会考虑这一点,并认为静态本地添加的实际价值很少,以至于它们不值得包含在语言中.(当然,这就是我投票的方式.)
| 归档时间: |
|
| 查看次数: |
820 次 |
| 最近记录: |