首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我需要了解枚举在java示例中的行为?

我需要了解枚举在java示例中的行为?
EN

Stack Overflow用户
提问于 2012-06-22 00:12:48
回答 5查看 3.8K关注 0票数 1

第一个是enum类

代码语言:javascript
运行
复制
enum coffeeSize{
    BIG(8), HUGE(10), OVERWHELMING(16);
    private int ounces;
    coffeeSize(int ounces ){
        this.ounces = ounces;
    }
    public int getOunces(){
        return ounces;
    }

}

这是类CoffeeTest1和main

代码语言:javascript
运行
复制
 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());
      }
}

以下是输出

代码语言:javascript
运行
复制
8  

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

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2012-06-22 00:21:30

我不明白"drink1.size.getounces()“是如何输出的8.

..。

:我想知道这个简单而微妙的逻辑。

为了理解这背后的逻辑,您可以将您的enum看作一个常规的class (这实际上是它的编译方式),并且

代码语言:javascript
运行
复制
BIG(8)

作为此类的实例,类似于

代码语言:javascript
运行
复制
new coffeesize(8);

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

票数 1
EN

Stack Overflow用户

发布于 2012-06-22 00:17:30

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

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

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

这并没有什么微妙之处。

票数 1
EN

Stack Overflow用户

发布于 2012-06-22 00:18:11

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

这意味着CoffeeTest1有一个引用枚举值的字段。

所以drink1是该类的一个实例。

size属性设置为枚举的BIG实例。

Bigounces 8。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11142353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档