Java中如何让继承BasePage的不同子类修改变量后值累计生效
问题根源
你当前定义的number和stringList属于实例成员变量,每一个BasePage子类的实例对象都会独立持有这两个变量的专属副本:ClassA的实例修改的是自身副本的数值,ClassB的实例修改的也是自身副本的数值,修改结果不会互相同步,自然无法实现全局累计的效果。
解决方法
给BasePage中的这两个变量添加static关键字修饰,将其改为类静态成员变量。静态成员变量属于类本身,所有该类及子类的实例共享同一份数据,所有修改操作都会直接作用在全局唯一的变量副本上,即可实现累计效果。
修正后的BasePage代码如下:
import java.util.ArrayList; import java.util.List; public class BasePage { // 静态类成员,所有实例共享 public static int number; public static List<String> stringList = new ArrayList<>(); }
补充说明
- 静态变量建议直接通过类名访问,写法更规范也更易读,比如直接调用
BasePage.number、BasePage.stringList获取累计结果即可。 - 如果你的使用场景涉及多线程同时操作这两个变量,需要做线程安全适配:
ArrayList是线程不安全的集合类,可替换为java.util.concurrent.CopyOnWriteArrayList;int的自增操作不是原子操作,可替换为java.util.concurrent.atomic.AtomicInteger。
内容的提问来源于stack exchange,提问作者paugarreina
相关产品推荐
相关产品推荐

