这是从SCJP 6示例中获取的程序。在这里,我们创建一个具有不同咖啡尺寸的enum,并声明一个名为ounces的私有变量,以获取枚举的盎司值部分。

我无法理解被覆盖的getLidCode方法的使用。一个人将如何访问getLidCode方法?

package com.chapter1.Declaration;

enum CoffeSize {
    BIG(8), HUGE(10), OVERWHELMING(20) {
        public String getLidCode() {
            return "B";
        }
    };

    CoffeSize(int ounce) {
        this.ounce = ounce;
    }

    private int ounce;

    public int getOunce() {
        return ounce;
    }

    public void setOunce(int ounce) {
        this.ounce = ounce;
    }

    public String getLidCode() {
        return "A";
    }
}

public class Prog7 {

    CoffeeSize size;

    public static void main(String[] args) {

        Prog7 p = new Prog7();
            p.size = CoffeeSize.OVERWHELMING;

            System.out.println(p.size.getOunces());

            //p.size.getLidCode(); ? is this correct way
        }
    }

最佳答案

如果将其间隔开一些,则更有意义:

enum CoffeSize {
    BIG(8),
    HUGE(10),
    OVERWHELMING(20) {
        public String getLidCode() {
            return "B";
        }
    };
    // rest of enum code here
}


OVERWHELMING覆盖getLidCode()

您可以通过这种方法(使用您的代码)来访问它:

System.out.println(p.size.getLidCode());


这样做的原因:p.size是类型CoffeSize,它具有方法getLidCode()。它将按预期打印覆盖方法的值。

10-08 01:00