我如何处理在Java中具有枚举的用户定义数据类型

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

对于分配,我必须处理用户定义的数据类型,即Gender。在Character类中,它具有变量int ageGender gender

Character类具有构造函数Character(int age, Gender gender), Character(Character c)以及getter和setter。 (已经为此分配给出了Character类的UML图)。

Person类中,它扩展了CharacterGender包括FEMALE,MALE and OTHERS。但是从这里开始,我不知道如何处理该枚举。

问题:

  • 我需要在CharacterPerson中指定枚举吗?

  • 另一个问题是Character(Character c)是什么意思。 Character c表示c是Character的实例吗?

  • 此外,年龄是一类不变式,年龄> = 0始终为真。我搜索了什么是类不变式,但并不太了解。我是否需要设置另一个名为Age的类来处理此类不变性?

我的角色类别如下:

public abstract class Character{
    private int age;
    private static Gender gender;
    public Character(int age, Gender gender){
        this.age = age;
        Character.gender = gender;
    }
    public Character(Character c){
    }
    public int getAge(){
        return age;
    } 
    public Gender getGender(){
        return gender;
    }
    public void setAge(int age){
        this.age = age
    }
    public void setGender(Gender gender){
        this.Character.gender = gender;
    }

}

“我的人”类如下:

public class Person extend Character{

}
java
1个回答
0
投票
  • 我需要在角色还是在人中指定枚举?

您需要创建Gender类型的枚举,如:

public enum Gender {
    MALE("Male"), FEMALE("Female"), OTHERS("Others");

    String value;

    Gender(String value)
    {
        this.value = value;
    }
}

然后在Character类中使用它,因为似乎[G0]比Character中的'性别'更合适。

  • 字符c表示c是字符的实例吗?

是,它的意思是,但是我认为应该在Person类中。

  • 我需要建立另一个名为Age的类来处理此类不变性吗?

您可以在@ Person处了解“类不变式”。另外,我认为年龄应该在What is a class invariant in java?类中声明,而不是在Person中声明。

您的角色类可以像:

Character

人员分类可以是:

public abstract class Character{
    private Gender gender;

    public Character(Gender gender){
        this.gender = gender;
    }

    public Character(Character character)
    {
        this.gender = character.gender;
    }
    public Gender getGender(){
        return gender;
    }
    public void setGender(Gender gender){
        this.gender = gender;
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.