生成具有相同属性的不同对象

问题描述 投票:0回答:1

我正在建立一个项目。要求之一是生成具有相同属性但随机不同值的对象。我尝试使用深度复制,但不确定在概念上是否正确。

  1. 因此,例如,我有一个Person类,它继承自抽象类Character
  2. 还有一个ScenarioGenerator,我将使用getRandomPerson方法来创建Person类的实例。

非常感谢任何建议的帮助。

这是我的Person课程的一部分:

public class Person extends Character {
private Random random;

private boolean pregnant;
private boolean isYou;

Person(int age, Profession profession ,Gender gender, BodyType bodyType, boolean isPregnant) {
    super(age, gender, bodyType);//pass the attributes to the super class called Character
}

Person (Person otherPerson) { //copy constructor

    this.age = otherPerson.getAge();
    this.gender = otherPerson.getGender();
    this.bodyType = otherPerson.getBodyType();
}
public Profession getProfession () { // One of the getters which generate random enum value
    //only adults have profession
    if (getAge()<=16 || getAge()>68) {
        return Profession.NONE;
    } else {
        return Profession.values()[new Random().nextInt(Profession.values().length)];
    }
}
// setters and getters
}

以及我的ScernarioGenerator类的方法:

public class ScenarioGenerator {
    public Person getRandomPerson() {
    //need age, gender, bodyType, profession, pregnancy
    Person people = new Person(person.getAge(), person.getProfession(), person.getGender(), person.getBodyType(), person.isPregnant());
    Person clone = new Person(people);
    return clone;
}
java random deep-copy
1个回答
1
投票

如果您想要深度克隆的对象,则可以通过实现clone类并覆盖clone函数来获得它,例如:>

public class Person extends Character implements Cloneable {......}

然后您可以简单地通过]获得新的深度复制对象>

Person clone=(Person) people.clone();
© www.soinside.com 2019 - 2024. All rights reserved.