【问题标题】:Java enum in Constructor构造函数中的 Java 枚举
【发布时间】:2018-04-02 20:58:58
【问题描述】:

我有一个具有枚举 Gender 的类人,并且在 Person Constructor 中我想初始化性别和年龄。如何在 main() 方法中实例化一个新的 Person?

class Person  {

   public enum Gender { M,F }

   int age;
   Gender gender;

   public Person(int age, Gender gender) {
       this.age=age; this.gender=gender;
   }           
}

public static void main(String[] args) {
    Person p = new Person(20, ?);        
}

最好的问候。

【问题讨论】:

  • Person p = new Person(20, Person.Gender.M); 就像任何嵌套的静态类(这就是嵌套枚举)。
  • 非常感谢,我只尝试过 Gender.M 和其他东西。
  • 提供了答案,因为有人只是逐字复制了我的评论并将其作为答案呈现。不酷。
  • @DontKnowMuchButGettingBetter 在 SO 上完全允许。你想写一个答案,写一个答案。
  • @chrylis:可能是允许的,但并没有真正通过“气味测试”。至少他应该稍微改变一下措辞,不是吗?

标签: java enums constructor


【解决方案1】:

使用

Person p = new Person(20, Person.Gender.M);

请注意,嵌套枚举的访问方式类似于嵌套的 static 类。

【讨论】:

    【解决方案2】:

    Person p = new Person(20, Person.Gender.M); 当然可以。

    但是每次需要指定枚举值时,在枚举前面加上 Person 封闭类就很笨拙了。

    所以在客户端类中添加正确的导入。 IDE 自动导入功能应该会为您完成。

    import Person.Gender;
    

    并使用更直接的方式:

    Person p = new Person(20, Gender.M);
    

    【讨论】:

    • 很好,1+。您也可以静态导入 Gender,然后传入 M 或 F,如果在程序中大量使用会很有用。
    • @DontKnowMuch 但是确实越来越好!导入功能可以使代码在使用时更具可读性。
    猜你喜欢
    • 2011-08-20
    • 1970-01-01
    • 1970-01-01
    • 2014-07-30
    • 2020-10-28
    • 2016-07-17
    • 1970-01-01
    • 2011-07-03
    • 1970-01-01
    相关资源
    最近更新 更多