簡體   English   中英

使用帶有枚舉 class java 的 getter 和 setter

[英]using getters and setters with enum class java

如果我不聲明private Type type; 並嘗試使用 getter 和 setter 我總是遇到某種錯誤,當然,我不太明白。 這對我來說只是一條紅線。 我只是想了解為什么我必須聲明一個我認為不需要的單獨變量來執行此操作。

請務必詢問我是否缺少任何信息。 這是我有史以來的第一個問題!

以下是我正在嘗試做的練習的一部分:

包含額外私有數據成員的Postgraduate.java

  • type:是一個叫Type的Enum,包括Research和Coursework;

在 Postgraduate.java 文件中實現 Java 方法,包括:

  • 為所有數據成員賦值的初始化構造函數;
  • 返回私有數據成員值的公共訪問方法getType()
  • 公共更新方法setType(Type newType)更新私有數據成員的值;
  • 返回研究生信息的公共重寫方法toString()
public class Postgraduate {
    private enum Type{Reserch,Coursework;}
    private Type type;

    public Postgraduate(Type newtype) {
        Type type=newtype;
    }

    public Type getType() {
        return type;
    }

    public void setType(Type newType){
        type = newType;
    }
}

枚舉是一種類型,與 class 或接口相同。 因此,這行代碼聲明了一個類型,而不是一個變量:

private enum Type{Reserch,Coursework;}

這行代碼聲明了一個成員變量,而不是一個全局變量(正如您在對問題的評論中所述):

private Type type;

此外,正如@ArunGowda 在他的評論中所寫,您在Postgraduate class 構造函數的代碼中有一個錯誤。 代碼應該是:

public Postgraduate(Type newtype) {
    type = newtype;
}

按照慣例,枚舉值全部大寫。 你也拼錯了研究 考慮以下代碼:

public class Postgraduate {
    private enum Type {RESEARCH, COURSEWORK}

    private Type  type;

    public Postgraduate(Type type) {
        this.type = type;
    }

    @Override // java.lang.Object
    public String toString() {
        return type.toString();
    }

    public static void main(String[] args) {
        Postgraduate phD = new Postgraduate(Type.RESEARCH);
        System.out.println(phD);
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM