多类间同值共享变量的访问实现咨询(含代码片段)
嘿,我来帮你搞定这个共享变量的问题!先看你提供的代码,有几个小细节需要调整,我会一步步给你梳理出可行的实现方案。
首先,先修正你代码里的几个小问题
- 命名不规范+拼写错误:你写的变量名
isToogleflagon、IsToogleflagon大小写混乱,而且Toogle应该是Toggle,建议统一成符合Java规范的小驼峰命名:isToggleFlagOn - 变量类型不合理:开关状态用
String类型太冗余,直接用boolean类型更贴合需求,避免字符串判断的潜在错误 - Setter方法未完成:你的
set_isToo...没写完,需要补全为完整的Setter方法
方案一:通过实例传递实现共享(基础版)
这种方式适合两个类之间有调用关系的场景,核心是让两个类使用同一个ToggleFlag实例,而不是各自新建。
第一步:修正后的ToggleFlag类
public class ToggleFlag { // 用boolean存储开关状态,更合理 private boolean isToggleFlagOn; // 空构造方法 public ToggleFlag() {} // 带初始状态的构造方法 public ToggleFlag(boolean isToggleFlagOn) { this.isToggleFlagOn = isToggleFlagOn; } // Getter方法(布尔类型建议用isXXX命名) public boolean isToggleFlagOn() { return isToggleFlagOn; } // Setter方法 public void setToggleFlagOn(boolean toggleFlagOn) { isToggleFlagOn = toggleFlagOn; } }
第二步:第一个类(设置开关状态)
public class FirstClass { public static void main(String[] args) { // 创建一个ToggleFlag实例 ToggleFlag toggleFlag = new ToggleFlag(); // 将开关设置为true toggleFlag.setToggleFlagOn(true); // 把这个实例传递给第二个类,让它能访问共享的状态 SecondClass secondClass = new SecondClass(toggleFlag); secondClass.printToggleStatus(); } }
第三步:第二个类(获取开关状态)
public class SecondClass { // 持有共享的ToggleFlag实例 private ToggleFlag toggleFlag; // 通过构造方法接收实例 public SecondClass(ToggleFlag toggleFlag) { this.toggleFlag = toggleFlag; } public void printToggleStatus() { // 获取并打印开关状态 boolean status = toggleFlag.isToggleFlagOn(); System.out.println("当前开关状态:" + status); } }
方案二:单例模式实现全局共享(进阶版)
如果希望开关状态是全局唯一的,不用手动传递实例,可以用单例模式,确保整个应用里只有一个ToggleFlag实例。
单例版ToggleFlag类
public class ToggleFlag { private boolean isToggleFlagOn; // 全局唯一的静态实例 private static ToggleFlag instance; // 私有构造方法,禁止外部直接新建实例 private ToggleFlag() {} // 获取全局实例的方法 public static ToggleFlag getInstance() { // 懒加载:第一次调用时才创建实例 if (instance == null) { instance = new ToggleFlag(); } return instance; } public boolean isToggleFlagOn() { return isToggleFlagOn; } public void setToggleFlagOn(boolean toggleFlagOn) { isToggleFlagOn = toggleFlagOn; } }
第一个类(设置状态)
public class FirstClass { public static void main(String[] args) { // 直接通过单例设置状态 ToggleFlag.getInstance().setToggleFlagOn(true); // 调用第二个类的方法获取状态 SecondClass.showToggleStatus(); } }
第二个类(获取状态)
public class SecondClass { public static void showToggleStatus() { // 直接通过单例获取状态 boolean status = ToggleFlag.getInstance().isToggleFlagOn(); System.out.println("全局开关状态:" + status); } }
关键总结
- 共享变量的核心是多个类访问同一个实例,不然每个类新建实例的话,变量是独立的,达不到共享效果
- 优先用
boolean类型存储开关状态,比String更简洁可靠 - 代码命名要规范,遵循Java的驼峰命名规则,避免拼写错误
内容的提问来源于stack exchange,提问作者TeleJim
相关产品推荐
相关产品推荐

