【问题标题】:Pass a simple enum into a constructor in Java将一个简单的枚举传递给 Java 中的构造函数
【发布时间】:2015-09-23 07:04:09
【问题描述】:

我正在努力学习 Java。我想在构造函数中有一个枚举作为参数。但我收到一个错误。

public class Person {

    private int age, weight, height;
    private String name;

    private enum gender {MALE, FEMALE}

    public Person(int age, int weight, int height, String name, enum gender) {
         this.age    = age;
         this.weight = weight;
         this.height = height;
         this.name   = name;
         this.gender = gender;
    }
}

我将如何处理性别?我只尝试过性别,但也没有用。

【问题讨论】:

  • public Person(int age, int weight, int height, String name, gender aGender) { gender 是您要传入的类型,而不是 enum。你可能想通读一下Code Conventions for the Java TM Programming Language,它会让人们更容易阅读你的代码,也让你更容易阅读其他人。 enumEnum 之间是有区别的,就像 classClass 之间的区别一样
  • this.gender = 性别部分呢?
  • 好的,谢谢你,我只需要把它改成 Enum 就可以了。
  • 就像所有其他变量一样,您需要定义genderprivate gender aGender 类型的变量,然后对其进行赋值this.aGender = aGender。你genderenum 只是一个不同的类型/类
  • 我错过了什么还是应该是public enum Gender ...

标签: java constructor enums


【解决方案1】:

首先,您需要创建gender...类型的字段...

private gender aGender;

然后你需要改变构造函数来引用gender类型的对象

public Person(int age, int weight, int height, String name, gender aGender) {

那么你需要将参数分配给你的字段...

this.aGender = aGender;

genderenum也应该是public

public enum gender {
    MALE, FEMALE
}

否则没人能用它

例如...

public class Person {

    private int age, weight, height;
    private String name;
    private gender aGender;

    public enum gender {
        MALE, FEMALE
    }

    public Person(int age, int weight, int height, String name, gender aGender) {
                 this.age = age;
        this.weight = weight;
        this.height = height;
        this.name = name;
        this.aGender = aGender;
    }
}

您可能想通读一下Code Conventions for the Java TM Programming Language,它将使人们更容易阅读您的代码并让您更轻松地阅读其他人

【讨论】:

  • 我只是想问,因为这将是枚举应该是公开的基类,但在我问之前你回答了,谢谢!
【解决方案2】:

如果定义了enum Gender,可以直接将Gender传递给构造函数,改成

public Person(int age, int weight, int height, String name, Gender gender)

【讨论】:

    【解决方案3】:

    您定义的枚举类型名称为gender,因此您需要将其传递为

    gender eGender
    

    只是一个评论。按照惯例,所有自定义类型(类名、接口名、枚举名)都应以大写字母开头。

    因此,在这种情况下,最好将枚举类型命名为这样。

    private enum Gender {MALE, FEMALE}
    

    【讨论】:

      猜你喜欢
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      • 2011-08-20
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多