为什么我们不能在里面声明一个静态变量一个静态函数?
Why can't we declare a static variable inside of a static function?
推荐答案你必须使静态最终静态或删除 static 。
在Java中,static表示它是类的变量/方法,它属于整个班级,但不是其中一个特定的对象。这意味着static关键字只能在类范围中使用。
In Java, static means that it's a variable/method of a class, it belongs to the whole class but not to one of its certain objects. This means that static keyword can be used only in a 'class scope'.
通常,在C中,您可以静态分配本地范围的变量。不幸的是,这不是Java直接支持的。但是你可以通过使用嵌套类来实现相同的效果。
Generally, in C, you can have statically allocated locally scoped variables. Unfortunately this is not directly supported in Java. But you can achieve the same effect by using nested classes.
例如,允许使用以下内容,但这是一个糟糕的工程,因为x的范围远大于它需要是。此外,两个成员之间存在非明显的依赖关系(x和getNextValue)。
For example, the following is allowed but it is bad engineering, because the scope of x is much larger than it needs to be. Also there is a non-obvious dependency between two members (x and getNextValue).
static int x = 42; public static int getNextValue() { return ++x; }人们真的想做以下事情,但这不合法:
One would really like to do the following, but it is not legal:
public static int getNextValue() { static int x = 42; // not legal :-( return ++x; }但是你可以这样做,
public static class getNext { static int x = 42; public static int value() { return ++x; } }以牺牲丑陋为代价更好的工程设计。
It is better engineering at the expense of some ugliness.
更多推荐
无法在静态方法中声明静态变量
发布评论