java 变量共享_java – 如何让两个类共享相同的变量定义

您可以使用继承或使用接口来执行此操作,其中变量在父类中设置为常量.由于您要扩展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`

}

编辑

由于您希望能够从不同的类更改相同的变量,您必须确保不更改副本并更改相同的变量,因此您应该在变量上使用volatile关键字向java指示所有线程都应该在更新之前检查该值.

现在,您需要一个单独的类,以便可以从其他类生成实例以获取值.您必须使用static关键字来确保为所有类实例保留一个副本.

public class MyVariableWrapper {

public static volatile int some_var = 9;

public void updateSomeVar(int newvar) {

some_var = newvar;

}

public int getSomeVar() { return some_var; }

}

现在其他两个类就是这样做的:

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());


版权声明:本文为weixin_39942037原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。