Как можно задать значение экземпляру класса с приватной переменной

Всем привет. Есть класс Dog с одной приватной переменной private int age;. В классе мэйн нужно создать три экземпляра этого класса с разными значениями переменной аge. В классе Dog не должно быть конструктора с параметрами и сеттеров. Можно ли это реализовать без использования рефлексии ?


Ответы (2 шт):

Автор решения: Igor

Реализовать это можно, использовав шаблон Builder.

public class Dog {
  private int age;

  public static class Builder {
    private Dog dog;

    public Builder() {
      dog = new Dog();
    }
    public setAge(int age) {
      dog.age = age;
      return this;
    }
    public Dog build() {
      Dog result = dog;
      dog = new Dog();
      return result;
    }
  }
}

Dog dog = new Dog.Builder()
          .setAge(3)
          .build();
→ Ссылка
Автор решения: Adm123

А скажите, уж не вложенные ли классы Вы изучаете? Если да - то задача решается созданием класса Dog внутри класса Main:

public class Main {


    static class Dog {
        private int age;
        public void print() {
            System.out.println("dog age = " + age);
        }
    }

    public static void main(String[] args) {
        Dog dog1 = new Dog();
        dog1.age = 5;
        dog1.print();
        Dog dog2 = new Dog();
        dog2.age = 4;
        dog2.print();
        Dog dog3 = new Dog();
        dog3.age = 6;
        dog3.print();
    }

}
→ Ссылка