[英]How to use enum in a parameterized constructor?
I have an assignment that asks me to create enumeration types. 我有一个任务要求我创建枚举类型。 My question is, after I initialize them, how do I bring them into the default and parameterized constructors?
我的问题是,在我初始化它们之后,如何将它们引入默认和参数化构造函数? i tried the following but it doesn't work... any ideas?
我试过以下但它不起作用......任何想法? Thanks
谢谢
package magazine;
import paperPublication.PaperPublication;
public class Magazine extends PaperPublication {
private enum paperQuality {LOW, NORMAL, HIGH};
private enum issuingFrequency {WEEKLY, MONTHLY, YEARLY};
public Magazine() {
paperQuality = null; //doesn't work
issuingFrequency = null; //doesn't work
}
public Magazine (double price, int numberOfPages, enum paperQuality //doesn't work, enum issuingFrequency //doesn't work) {
}
}
This is a type definition: 这是一个类型定义:
private enum paperQuality ...
But you don't actually have a field of that type declared. 但是你实际上没有声明该类型的字段。 Try something like this:
尝试这样的事情:
private enum PaperQuality {...};
private PaperQuality paperQuality;
The first line defines the PaperQuality enum, defining the various values that any PaperQuality can hold. 第一行定义PaperQuality枚举,定义任何PaperQuality可以容纳的各种值。 The second line creates a private field that is of that type, named
paperQuality
. 第二行创建一个属于该类型的私有字段,名为
paperQuality
。 The constructor could look like this: 构造函数可能如下所示:
public Magazine (double price, int numberOfPages, PaperQuality paperQuality) {
...
this.paperQuality = paperQuality;
}
You've declared the type but not the instance. 您已声明了类型,但未声明实例。 You'll want...
你会想......
public enum PaperQuality {LOW, NORMAL, HIGH};
public enum IssuingFrequency {WEEKLY, MONTHLY, YEARLY};
PaperQuality paperQuality;
IssuingFrequency issuingFrequency;
public Magazine() {
paperQuality = null;
issuingFrequency = null;
}
public Magazine (double price, int numberOfPages, PaperQuality paperQuality){
//logic here
}
I suggest you read a tutorial on Java enums. 我建议你阅读关于Java枚举的教程。
enum
keyword is like class
keyword: it defines a type, not a variable. enum
关键字就像class
关键字:它定义了一个类型,而不是一个变量。
You code is similar to the following: 您的代码类似于以下内容:
public class Magazine extends PaperPublication {
private class paperQuality { /* something */ }; // note class instead of enum
private class issuingFrequency { /* something */ };
public Magazine() {
paperQuality = null; //doesn't work -- beacuse paperQuality is a class
paperQuality a; // does work because class name is suitable for variable definition
a = null; // you can assign null to class variables
For instance, you can create enum in the body of class 例如,您可以在类的主体中创建枚举
enum Sex {
MALE,
FEMALE
}
Also, you can create a separate class. 此外,您可以创建一个单独的类。 Then declare the variable with enum type,and in the parentheses of the constructor, specify the type that you created
然后使用枚举类型声明变量,并在构造函数的括号中指定您创建的类型
private Sex enSex;
private String personName;
private int personAge;
private double personWeight;
public Person(String name, int age, double weight, Sex enSex) {
this.personName = name;
this.personAge = age;
this.personWeight = weight;
this.enSex = enSex;
}
private enum paperQuality {LOW, NORMAL, HIGH};
private enum issuingFrequency {WEEKLY, MONTHLY, YEARLY};
First create a variable for the enum type. 首先为枚举类型创建一个变量。
paperQuality paperqual;
issuingFrequency issuingfre;
then you can use those enum variable to assign values 然后你可以使用那些枚举变量来赋值
public Magazine() {
paperqual= null;
issuingfre= null;
}
public Magazine (paperQuality pq,issuingFrequency isq) {
paperqual = pq;
issuingfre = isq;
}
Declare a variable of the enumerated type: 声明枚举类型的变量:
private paperQuality quality;
( enum paperQuality { ... }
just defines the enum type, it does not create a variable!). (
enum paperQuality { ... }
只定义枚举类型,它不会创建变量!)。
Also, you cannot assign null
to an enumerated type, it must be one of the enumerated values (ie LOW
). 此外,您不能将
null
赋值给枚举类型,它必须是枚举值之一(即LOW
)。
enum isn't a datatype its more like the "class" keyword. 枚举不是数据类型,更像是“class”关键字。 The datatypes in your example are paperQuality and issuingFrequency.
示例中的数据类型为paperQuality和issuingFrequency。 So:
所以:
public Magazine (double price,
int numberOfPages,
paperQuality quality,
issuingFrequency freq) {
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.