You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:36:01