diff --git a/hw-01/src/ImmutableClasses.java b/hw-01/src/ImmutableClasses.java new file mode 100644 index 0000000..87ab1db --- /dev/null +++ b/hw-01/src/ImmutableClasses.java @@ -0,0 +1,27 @@ +import java.util.Objects; + +final class ImmutableClass { + ImmutableClass(MutableClass firstField, String secondField, Integer thirdField) { + this.firstField = new MutableClass(Objects.requireNonNull(firstField)); + this.secondField = secondField; + this.thirdField = thirdField; + } + + public MutableClass getFirstField() { + return new MutableClass(firstField); + } + + public String getSecondField() { + // Копировать не нужно так как String является Immutable + return secondField; + } + + public Integer getThirdField() { + // Копировать не нужно так как Integer является Immutable + return thirdField; + } + + private final MutableClass firstField; + private final String secondField; + private final Integer thirdField; +} diff --git a/hw-01/src/MutableClass.java b/hw-01/src/MutableClass.java new file mode 100644 index 0000000..997d089 --- /dev/null +++ b/hw-01/src/MutableClass.java @@ -0,0 +1,20 @@ +class MutableClass { + MutableClass(int value) { + this.setValue(value); + } + + // Конструктор копирования + public MutableClass(MutableClass other) { + this.value = other.value; + } + + public int getValue() { + return value; + } + + public void setValue(int value) { + this.value = value; + } + + private int value; +} diff --git a/hw-01/src/MutableImmutableClasses.java b/hw-01/src/MutableImmutableClasses.java deleted file mode 100644 index 8caca3c..0000000 --- a/hw-01/src/MutableImmutableClasses.java +++ /dev/null @@ -1,27 +0,0 @@ -class MutableClass { - MutableClass(int value) { - this.setValue(value); - } - - public int getValue() { - return value; - } - - public void setValue(int value) { - this.value = value; - } - - private int value; -} - -final class ImmutableClass { - ImmutableClass(MutableClass field) { - this.field = new MutableClass(field.getValue()); - } - - public MutableClass getField() { - return new MutableClass(field.getValue()); - } - - private final MutableClass field; -} diff --git a/hw-01/src/README.md b/hw-01/src/README.md index dfbbf67..09f1020 100644 --- a/hw-01/src/README.md +++ b/hw-01/src/README.md @@ -2,3 +2,8 @@ Реализовать свой иммутабельный класс, который будет внутри себя содержать поле с изменяемым классом. + +## UPDATED + +Иммутабельный класс должен содержать минимум 3 различных поля, включая поле с +изменяемым классом.