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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值