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

在Java的for-each循环中使用getter方法是否不合规范?

在for-each循环中使用getter方法完全符合规范

首先明确:在for-each循环里调用getter方法绝对不是不合规范的操作,反而这是Java面向对象编程中遵循封装原则的正确做法。

你的示例代码里直接访问了p.name和p.number这两个字段,这才是不符合Java封装规范的写法——直接暴露类的成员字段会破坏封装性,后续如果需要对字段的取值做逻辑处理(比如格式转换、校验),或者修改字段的存储方式,就需要修改所有直接访问该字段的代码,维护成本极高。

正确的做法示例

先给Program类添加对应的getter方法:

public class Program {
    private int number;
    private String name;

    public Program(int number, String name) {
        this.number = number;
        this.name = name;
    }

    // getter方法
    public int getNumber() {
        return number;
    }

    public String getName() {
        return name;
    }
}

然后在for-each循环中调用getter方法:

public static void main(String[] args) {
    ArrayList<Program> programs = new ArrayList<>();

    Program program1 = new Program(1, "National Geographic");
    Program program2 = new Program(12, "TV2");
    Program program3 = new Program(24, "Disney Channel");
    Program program4 = new Program(33, "MTV");

    programs.add(program1);
    programs.add(program2);
    programs.add(program3);
    programs.add(program4);

    for(Program p : programs) {
        System.out.println(p.getName() + " " + p.getNumber());
    }
}

为什么推荐用getter?

  • 遵循封装原则:隐藏类的内部实现细节,只对外提供可控的访问接口。
  • 便于扩展:如果后续需要给name字段添加前缀,或者对number做格式化,只需要修改getName()或getNumber()方法,不需要改动所有调用处的代码。
  • 符合JavaBean规范:这是Java开发中的通用约定,能让你的代码更易被其他开发者理解和维护。

内容的提问来源于stack exchange,提问作者Nidos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:30:50