2012-02-28 6 views
0

私はJavaで初心者ですから、私の質問は奇妙で馬鹿に聞こえるかもしれません。しかし、とにかく、私はいくつかのフォーム(JFrameを拡張するクラス)を持っています。私が望むのは、すべてのフォームで読み込みと書き込みが可能な変数を持つことです。インターフェイスを作成してフォームに実装すると、インターフェイスのすべての変数にはフォームでアクセスできますが、読み取り専用には新しい値を割り当てることができません。Javaのセッション変数

質問:これはJavaで行うことはできますか?はいの場合はどうですか?

+0

を助け

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

希望は私のガラス玉がインターフェイス – vickirk

+0

@vickirkにsetXXXメソッドを追加すると言う応用 - たとえば、私は、Javaを実行するためにランナーと呼ばれるクラスを使用します。あなたはあなたの意見についてより詳細な情報(私はあなたにも簡単なコードを与えることができたら大変感謝しています)で新しい回答として投稿してください。 – Bakhtiyor

答えて

0

インターフェイスには変数がありません。つまり、定数はfinalのメンバ - つまり定数のみです。インターフェイスをクラスに置き換えることができます。次に、関心のあるクラスメンバーにアクセスできます。

+0

しかし、私のクラスはJFrameを拡張して、私があなたに合っていれば、あなたが話している2番目のクラスを拡張することができませんでした。 – 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()); 
} 
} 

私は個人的には推奨しません。私はむしろあなたが別のクラスを使うことを提案したいと思います - 特にこれらの変数を保持するMainメソッドを持つあなたのクラス。これはより多くの情報がなければ