В C вы можете иметь статически расположенные переменные локальной области видимости.К сожалению, это не поддерживается напрямую в Java.Но вы можете добиться того же эффекта, используя вложенные классы.
Например, допустимо следующее, но это плохое проектирование, потому что область действия x намного больше, чем нужно.Также существует неочевидная зависимость между двумя членами (x и getNextValue).
static int x = 42;
public static int getNextValue() {
return ++x;
}
Хотелось бы сделать следующее, но это недопустимо:
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;
}
}
Лучше проектировать за счет некоторого безобразия.