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

博客探讨了在Java中如何通过接口和volatile关键字实现不同类间的变量共享。通过创建一个接口和一个静态volatile变量,两个类可以访问并修改这个公共变量。此外,还介绍了一个变量包装类来管理和更新这个共享变量,确保多线程环境下的正确同步。
摘要由CSDN通过智能技术生成

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值