Sobes.tech
Junior — Middle

Ինչպե՞ս կարող ենք իրականացնել դաս, որպեսզի նրա վիճակը մնա անփոփոխ ստեղծվելուց հետո։

sobes.tech AI

Պատասխան AI-ից

Java-ում փոփոխական չհանդիսացող (immutable) դաս ստեղծելու համար անհրաժեշտ է:

  • Դասը final դարձնել, որպեսզի այն ժառանգել կամ փոխել նրա վարքը հնարավոր չլինի:
  • Բոլոր դաշտերը հայտարարել որպես private final:
  • Բոլոր դաշտերը սկզբնավորել կոնստրուկտորով:
  • Չտալ setter-ներ (մեթոդներ դաշտերը փոխելու համար):
  • Եթե դաշտերը փոփոխական օբյեկտներ են (օրինակ, զանգվածներ, հավաքածուներ), ապա նրանց պատճենները ստեղծել կոնստրուկտորում և getter-ներից վերադարձնել:

Օրինակ՝

public final class ImmutablePerson {
    private final String name;
    private final int age;

    public ImmutablePerson(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public String getName() {
        return name;
    }

    public int getAge() {
        return age;
    }
}

Այսպիսի դասը, օբյեկտ ստեղծելուց հետո, թույլ չի տալիս փոխել նրա վիճակը։