是否可以在不使用循环的情况下更新java中的所有对象?

cclgggtu  于 2021-06-27  发布在  Java
关注(0)|答案(1)|浏览(360)

我有一个employee类,我希望所有员工的年龄都增加一个,使用一种方法而不循环。有可能吗?

  1. class Employee{
  2. Employee(int age)
  3. {
  4. this.age = age;
  5. }
  6. String name;
  7. int age;
  8. static void NextYear()
  9. {
  10. //age++;
  11. // will increase all ages by 1
  12. }
  13. void increaseAge() // I don't want this method
  14. {
  15. age++;
  16. }
  17. }
  18. public class Main
  19. {
  20. public static void main(String[] args) {
  21. Employee e1 = new Employee(23);
  22. Employee e2 = new Employee(34);
  23. Employee.NextYear(); // want increase all ages by one
  24. System.out.println("e1 age " + e1.age); // need 24
  25. System.out.println("e2 age " + e2.age); // need 35
  26. }
  27. }
jhiyze9q

jhiyze9q1#

可以使用静态字段,但我不建议这样做。
为什么不推荐这种方法?
静态变量更难测试,需要额外的关注和多线程环境的额外同步。在这样一个简单的场景中,您将引入不必要的复杂性。

  1. private static class Employee {
  2. private static int offset;
  3. private final String name;
  4. private final int age;
  5. private Employee(String name, int age) {
  6. this.name = name;
  7. this.age = age;
  8. }
  9. public String getName() {
  10. return name;
  11. }
  12. public int getAge() {
  13. return age + offset;
  14. }
  15. public static void nextYear() {
  16. offset++;
  17. }
  18. }
  19. Employee e1 = new Employee("e1", 23);
  20. Employee e2 = new Employee("e2", 34);
  21. Employee.nextYear();
  22. System.out.println("e1 age " + e1.getAge()); // 24
  23. System.out.println("e2 age " + e2.getAge()); // 35
展开查看全部

相关问题