2012-02-28 3 views
0

Я новичок в Java, поэтому мой вопрос может звучать странно и глупо. Но в любом случае у меня есть несколько форм (классы, которые расширяют JFrame). Я хочу иметь переменную, доступную для чтения и для записи во всех формах. Когда я создаю интерфейс и реализую его в своих формах, все переменные интерфейса доступны в формах, но только для чтения, я не могу назначить для них новое значение.Переменная сеанса в java

Вопрос: Возможно ли это сделать в java? Если да, то как?

+0

Без дополнительной информации моего стеклянный шар говорит добавить метод SetXXX на интерфейс – vickirk

+0

@vickirk. Не могли бы вы опубликовать новый ответ с более подробной информацией (я очень признателен, если вы также можете дать краткий код) о своем мнении. – Bakhtiyor

ответ

0

Интерфейсы не имеют переменных, у них есть только final пользователей - т. Е. Константы. Вы можете заменить интерфейс классом, и тогда у вас будет доступ к интересующим вас членам класса.

+0

, но мои классы расширяют JFrame и не могут расширить второй класс, о котором вы говорите, если я правильно вас понял. – Bakhtiyor

+0

Используйте делегат и просто вызовите методы делегата из этого класса. – vickirk

0

Похоже, вы хотите либо синглтон, либо класс с множеством статических свойств.

Главное, чтобы иметь в виду, что если у вас есть несколько потоков, обращающихся к «глобальным» свойствам, необходимо, чтобы доступ необходимо синхронизировать.

0

В интерфейсах Java есть только final пользователей. И это означает, что эти члены являются окончательными. Скорее всего, вы не можете расширить класс, так как ваши классы форм расширяют JFrame. Опция, используемая здесь, состоит в том, чтобы иметь промежуточный класс наследования. Посмотрите ниже, например.

class intermediateClass extends JFrame{ 
//some code if any 

String name; 
//Getter/Setter 
} 

class yourForm extends intermediateClass{ 
public yourForm(){ 
    setName("Ddd"); 
    System.out.println(getName()); 
} 
} 

Но я лично его не рекомендую. Я бы предпочел, чтобы вы использовали другой класс - специально ваш класс с основным методом для хранения этих переменных. Например, я использую класс под названием Runner для выполнения Java Приложения-

class Runner{ 
String name; 
public static void main(String[] args) { 
    setName("Dchan"); 
    System.out.println(getName()); 
} 
//getter/setter 
} 

Надеется, что это помогает

Смежные вопросы