Сохранить состояние неизвестного класса - PullRequest
0 голосов
/ 13 сентября 2018

У меня есть родительский класс и 26 дочерних классов, и я хочу сохранить состояние экземпляра одного из этого класса.

Родительский класс:

public class ParentClass {
    protected String name;
    protected String type;

    public ParentClass(String name) {
        this.name = name;
        this.type = "Parent";
    }

    public ParentClass(ParentClass src){
        this.name = src.name;
        this.type = src.type;
    }
}

Первый дочерний класс, который содержит дополнительные поля:

public class ChildClassA extends ParentClass {
    protected String value;

    public ChildClassA(String name, String value) {
        super(name);
        this.value = value;
        this.type = "A";

    }

    public ChildClassA(ChildClassA src) {
        super(src);
        this.value = src.value;
    }
}

Последний дочерний класс, который содержит другие поля:

public class ChildClassZ extends ParentClass {
    protected int size;

    public ChildClassZ(String name, int size) {
        super(name);
        this.size = size;
        this.type = "Z";
    }

    public ChildClassZ(ChildClassZ src) {
        super(src);
        this.size = src.size;
    }
}

Чтобы сохранить состояние неизвестного класса, я использую конструктор в дочернем классе с параметром этого класса, определяю тип класса и инициирую по структуре case.

Можно ли избежать использования структуры case или if-then-else для созданиякод более читабелен?Может быть отражение.

public static void main(String[] args) {
    ParentClass a = new ChildClassA("classA", "585");
    ParentClass z = new ChildClassZ("classB", 1024);

    a.name = "changedName";

    ParentClass originalState2 = null;

    System.out.println("Test Test");

    switch (z.type) {
        case "A":
            originalState2 = new ChildClassA((ChildClassA)z);
        case "Z":
            originalState2 = new ChildClassZ((ChildClassZ)z);
    }

    System.out.println("The original name is " + originalState2.name + " and the type is " + originalState2.type +
        ", the value is " + ((ChildClassZ)originalState2).size);
}

1 Ответ

0 голосов
/ 13 сентября 2018

"Java-объект может записывать в файл для последующего доступа, это называется Сериализация. Чтобы сделать это, вы должны реализовать Serializableinterface и использовать ObjectOutputStream для записи объектов в файл. "

https://www.mkyong.com/java/how-to-write-an-object-to-file-in-java/

Конечно, вы можете хранить их как строку вместо файла

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...