[英]How to use enum in a parameterized constructor?
我有一個任務要求我創建枚舉類型。 我的問題是,在我初始化它們之后,如何將它們引入默認和參數化構造函數? 我試過以下但它不起作用......任何想法? 謝謝
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) {
}
}
這是一個類型定義:
private enum paperQuality ...
但是你實際上沒有聲明該類型的字段。 嘗試這樣的事情:
private enum PaperQuality {...};
private PaperQuality paperQuality;
第一行定義PaperQuality枚舉,定義任何PaperQuality可以容納的各種值。 第二行創建一個屬於該類型的私有字段,名為paperQuality
。 構造函數可能如下所示:
public Magazine (double price, int numberOfPages, PaperQuality paperQuality) {
...
this.paperQuality = paperQuality;
}
您已聲明了類型,但未聲明實例。 你會想......
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
}
我建議你閱讀關於Java枚舉的教程。
enum
關鍵字就像class
關鍵字:它定義了一個類型,而不是一個變量。
您的代碼類似於以下內容:
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
例如,您可以在類的主體中創建枚舉
enum Sex {
MALE,
FEMALE
}
此外,您可以創建一個單獨的類。 然后使用枚舉類型聲明變量,並在構造函數的括號中指定您創建的類型
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};
首先為枚舉類型創建一個變量。
paperQuality paperqual;
issuingFrequency issuingfre;
然后你可以使用那些枚舉變量來賦值
public Magazine() {
paperqual= null;
issuingfre= null;
}
public Magazine (paperQuality pq,issuingFrequency isq) {
paperqual = pq;
issuingfre = isq;
}
聲明枚舉類型的變量:
private paperQuality quality;
( enum paperQuality { ... }
只定義枚舉類型,它不會創建變量!)。
此外,您不能將null
賦值給枚舉類型,它必須是枚舉值之一(即LOW
)。
枚舉不是數據類型,更像是“class”關鍵字。 示例中的數據類型為paperQuality和issuingFrequency。 所以:
public Magazine (double price,
int numberOfPages,
paperQuality quality,
issuingFrequency freq) {
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.