継承を使用して、またはインターフェイスを使用して、変数を親クラスの定数として設定することができます。あなたはJLabelのを拡張しているので、あなたは両方のクラスにインターフェースを実装する必要があります。
public interface MyInterface {
int someint = 9;
}
public class MyClass1 extends JLabel implements MyInterface {
//this class has access to `someint`
}
public class MyClass2 extends JLabel implements MyInterface {
// also has access to `someint`
}
編集
あなたは異なるクラスから同じ変数を変更することができるようにしたいので、あなたが持っているあなたは「AREN確保するためにコピーを変更して同じ変数を変更しているので、変数にvolatile
キーワードを使用して、すべてのスレッドが値を確認してから更新するようにjavaに指示する必要があります。
これで、値を取得するためにインスタンスを他のクラスから作成できるように、別のクラスを用意する必要があります。 static
キーワードを使用して、すべてのクラスインスタンスに対して1つのコピーが確実に保持されるようにする必要があります。
public class MyVariableWrapper {
public static volatile int some_var = 9;
public void updateSomeVar(int newvar) {
some_var = newvar;
}
public int getSomeVar() { return some_var; }
}
今、他の2つのクラスがちょうどこの操作を行います。
public class MyClass1 extends JLabel {
MyVariableWrapper myVariableWrapper;
MyClass1() {
super();
myVariableWrapper = new MyVariableWrapper();
// now I have access to `some_var`
}
}
public class MyClass2 extends JLabel {
MyVariableWrapper myVariableWrapper;
MyClass2() {
super();
myVariableWrapper = new MyVariableWrapper();
// now I have access to the same `some_var` as MyClass1
}
// this is a wrapper method for your convenience
// since you don't like the excess code when accessing the variable
public int getSomeVar() {
return myVariableWrapper.some_var;
// or myVariableWrapper.getSomeVar();
}
public void setSomeVar(int newvar) {
myVariableWrapper.some_var = newvar;
// or myVariableWrapper.setSomeVar(newvar);
}
}
今、あなたはこれを行うことができます:あなたが記述している何
MyClass2 myClass2 = new MyClass2();
System.out.println(""+myClass2.getSomeVar());
は* *ミックスインと呼ばれます - Javaにはそれらがありません。あなたは既に慣れ親しんだ1つのパターンまたはもう1つのパターンに頼らなければなりません。 –
私と同じ問題です。 – Acewin