У меня есть класс Java, в котором каждый метод был определен как static
. Так что мне не нужно переписывать класс, а затем хороший бит кода, который зависит от него, я добавляю некоторые сообщения об ошибках через переменную экземпляра. Однако Java, похоже, не может получить доступ к переменным экземпляра из методов класса. Я читаю переменные класса Sun description и опасаюсь просто изменить каждый метод на метод экземпляра в этом классе без лучшего понимания того, как он будет работать в веб-приложении.Использование памяти переменных класса Java и экземпляра в веб-приложении?
Согласно (1), как я понимаю, методы класса используют одинаковое расположение памяти для всех экземпляров объекта. Таким образом, в веб-приложении не означает ли это, что каждый процесс ссылается на один и тот же адрес памяти для статического метода? И, в свою очередь, каждый процесс будет переопределять все методы экземпляра?
Если бы я должен был создать переменную класса для отслеживания ошибок, разве это не привело бы к ситуации, когда процесс А мог вызвать ошибку в процессе B? Могут ли методы экземпляра даже получить доступ к переменным класса?
Edit:
Позвольте мне пояснить, что я пытаюсь выполнить с некоторыми примерами кода.
Во-первых, мой класс:
public class MyClass {
public int error = 0;
public String methodA() { // Do some stuff if (ret == null) this.error = 1; return ret; }
public static boolean methodB() { // Same thing but I can't access this.error here } }
Теперь мое приложение:
MyClass myClass = new MyClass();
String aString = myClass.methodA();
if (myClass.error != 0) {
out.print("What did you do!?");
return;
}
«Вот почему, имеющих статические поля, как правило, считается плохим вещь." ... за исключением «констант» (окончательный примитив/неразрешимый), которые читаются только. – leonbloy
Итак, если я должен был повторно объявить все методы как методы экземпляра (удалить статическое ключевое слово), то я бы не взял на себя штраф за память? То есть, каждый новый запрос страницы не требует больше памяти, чем если бы методы были статическими? –
@jsumners: вам потребуется создать хотя бы один экземпляр, который занимает около 8 байтов плюс любые поля экземпляров, которые вы определяете, - не стоит беспокоиться, другими словами. –