为什么java中的静态方法只接受其方法中的final或非final变量,而不是静态?
例如,我有以下方法:
public static void myfunc(int somethig)
{
int a=10;
final int b=20;
static int c=30; //gives Error why?
}
答案 0 :(得分:11)
问题是:为什么不呢?
考虑一下:静态局部变量意味着什么?
我建议唯一的明智的意思就是:
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语言设计人员可能会考虑这一点,并认为静态本地人添加的实际价值很少,以至于他们不值得包含在语言中。 (当然,这就是我投票的方式。)
答案 1 :(得分:3)
在Java中(在面向对象编程中),对象携带状态。方法应该通过对象属性共享状态,而不是通过静态局部变量。
答案 2 :(得分:2)
答案 3 :(得分:1)
您不能拥有静态变量。哪有这回事。您可以将类变量设置为静态。
答案 4 :(得分:-1)
由于java中的每个函数都必须在一个类中,因此可以通过声明类中的字段来获得相同的效果。这是最简单的方法,而且java语言设计者非常保守。他们永远不会添加这样的功能,当有一个更明显,更简单的方法来做同样的事情。
编辑:我认为哲学函数不是java中的第一类。他们不应该存储数据。类是,而且确实如此。