1

第一个是枚举类

enum coffeeSize{
    BIG(8), HUGE(10), OVERWHELMING(16);
    private int ounces;
    coffeeSize(int ounces ){
        this.ounces = ounces;
    }
    public int getOunces(){
        return ounces;
    }

}

这是类 CoffeeTest1 和 main

 public class CoffeeTest1 {
      coffeeSize size;

      public static void main (String args[]) {
          CoffeeTest1 drink1 = new CoffeeTest1();
          drink1.size = coffeeSize.BIG;

          System.out.println(" " + drink1.size.getOunces());
      }
}

下面是输出

8  

我的问题:我不明白如何drink1.size.getounces()输出 8。我没有给出构造函数coffeeSize(8)对象(例如:)coffeeSize somex = new coffeeSize(BIG)。我想知道这背后简单微妙的逻辑。有人可以帮我理解吗?

4

5 回答 5

1

一个建议:查找、学习并遵循 Sun Java 编码标准。它将提高您的代码的可读性。

根据您的枚举,它输出 8 因为这是 BIG 咖啡大小的大小(以盎司为单位)。这就是您传递给 BIG 构造函数的值。

drink1是类的实例,它有一个coffeeSize名为的包可见数据成员size。每个coffeeSize实例都有一个方法,该方法getOunces返回您传递给其构造函数的整数值。

它没有什么微妙之处。

于 2012-06-21T16:17:30.070 回答
1

我不明白“drink1.size.getounces()”如何输出 8。

[...]

我想知道这背后简单微妙的逻辑。

要了解这背后的逻辑,您可以将 yourenum视为常规class(实际上是它的编译方式),并且

BIG(8)

作为此类的一个实例,类似于

new coffeesize(8);

现在应该清楚为什么drink1.size.getOunces()打印 8:BIG只是coffeesize枚举的一个实例,ounces在构造它时将其设置为 8。

于 2012-06-21T16:21:29.943 回答
0

您会注意到该getOunces方法是在枚举上定义的。在 Java 中,枚举值本身可以具有属性和方法。

暗示CoffeeTest1有一个引用枚举值的字段。

drink1该类的实例也是如此..该
属性size设置为BIG枚举的实例..
Bigounces8个。

于 2012-06-21T16:18:11.483 回答
0

当您指定BIG(8)您正在创建它时,将 8 传递给它的构造函数(10 或 16)。当您使用它时,coffeeSize.BIG.getOunces()您正在调用它的方法getOuncesBIG,HUGEOVERWHELMING是 a 的可能值coffeeSize,每个都有自己的状态。

于 2012-06-21T16:18:34.487 回答
0
enum Colour {
   Black,White,Red,Green,Yellow,Grey
}

public class EnumExample {

   public static void main(String[] args) {

     Colour colour;

     colour = Colour.Black;

     System.out.println("Selected "+colour+" Colour");

     colour = Colour.Yellow;

     System.out.println("Selected "+colour+" Colour");
  }

}
于 2016-05-25T11:19:10.383 回答