Java 1.6中的枚举类主体功能

Java 1.6中的枚举类主体功能,java,enums,Java,Enums,这是K&B6书中的SCJP1.6问题。 这是一个特定于常量的类主体的示例,它是SCJP 6的一个特性。如何执行此操作并查看结果输出 我有两个问题: 我的Java主方法是什么样子的?请帮助我执行这个部分代码。我无法理解输出的行为 getLidCode()方法如何在Java 1.6中的这个类主体中工作 您所称的特定于常量的类主体是指枚举常量的可选类主体。它被实现为一个匿名的内部类,扩展了外部的封闭枚举。因此,在您的例子中,枚举常量将是一个匿名的内部类型,它扩展了CoffeeSize,并覆盖了方法ge

这是K&B6书中的SCJP1.6问题。 这是一个特定于常量的类主体的示例,它是SCJP 6的一个特性。如何执行此操作并查看结果输出

我有两个问题:

  • 我的Java主方法是什么样子的?请帮助我执行这个部分代码。我无法理解输出的行为

  • getLidCode()
    方法如何在Java 1.6中的这个类主体中工作


  • 您所称的特定于常量的类主体是指枚举常量的可选类主体。它被实现为一个匿名的内部类,扩展了外部的封闭枚举。因此,在您的例子中,枚举常量
    将是一个匿名的内部类型,它扩展了
    CoffeeSize
    ,并覆盖了方法
    getLidCode()
    。在伪代码中,内部类如下所示:

    enum CoffeeSize{               
          BIG(8),   
          HUGE(10),   
          OVERWHELMING(16) {   
    
           public String getLidCode(){   
                return "A";   
           }   
          };   
    
        private int ounces;   
    
        public int getOunces(){   
             return ounces;   
        }    
    
        CoffeeSize(int ounces){   
            this.ounces = ounces;   
        }   
    
        public String getLidCode(){   
                return "B";   
        }   
    }  
    
    在常量
    BIG
    BIG
    上调用
    getLidCode()
    将调用基本枚举实现,而在
    overriding
    上调用相同的方法将调用该方法的重写版本,因为
    overriding
    实际上是另一种类型。要进行测试,只需运行代码来调用不同枚举常量的
    getLidCode()

    class CoffeeSize$1 extends CoffeeSize {
        @Override
        public String getLidCode() {
            return "A";
        }
    }
    
    干杯:-)


    “执行”什么?这是一个枚举
    CoffeeSize.BIG.getOunces()
    我能知道我错在哪里吗?2.getLidCode()方法在Java 1.6中这个常量特定的类主体中是如何工作的,我接受我不知道这个枚举代码应该如何工作,所以我发布了这个问题“常量特定的类主体”是什么意思?非常好的解释。感谢这么多的理解,我非常感谢你。我不知道为什么其他人否决了我的问题。我只需要一个解释:(,我们都在这里互相帮助。请分享知识。再次感谢Perception Perception,你为什么投票关闭它,这是一个现实的问题question@Deepak-这是一个协作网站,因此我无法控制其他人的行为。Aka,我没有投票关闭,但其他人可能会关闭。Perception,我已向您发送了一封电子邮件。您可以回复吗
    System.out.println(CoffeeSize.BIG.getLidCode());
    System.out.println(CoffeeSize.HUGE.getLidCode());
    System.out.println(CoffeeSize.OVERWHELMING.getLidCode());
    
    I have executed my answer,as below.Please correct me if im wrong.output is given. 
    
    public class EnumOverriddenExample {
    enum CoffeeSize{               
          BIG(8),   
          HUGE(10),   
          OVERWHELMING(16){   
    
               public String getLidCode(){   
                    return "A";   
               }   
          };
    
        CoffeeSize(int ounces){   
                this.ounces = ounces;   
        }
    
        private int ounces;   
    
        public int getOunces(){   
             return ounces;   
        }   
    
        public void setOunces(int ounces){   
             this.ounces=ounces;   
        }
    
        public String getLidCode(){   
                return "B";   
        }   
    }  
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("CoffeeSize for BIG is "+EnumOverriddenExample.CoffeeSize.BIG.getLidCode());
        System.out.println("CoffeeSize for HUGE is "+EnumOverriddenExample.CoffeeSize.HUGE.getLidCode());
        System.out.println("CoffeeSize for OVERWHELMING is "+EnumOverriddenExample.CoffeeSize.OVERWHELMING.getLidCode());
    
        System.out.println("CoffeeSize for BIG is "+EnumOverriddenExample.CoffeeSize.BIG.getOunces());
        System.out.println("CoffeeSize for HUGE is "+EnumOverriddenExample.CoffeeSize.HUGE.getOunces());
        System.out.println("CoffeeSize for OVERWHELMING is "+EnumOverriddenExample.CoffeeSize.OVERWHELMING.getOunces());
    
    }
    
    }
    
    Output is below
    -----------------------------------
    CoffeeSize for BIG is B --> returns "B"
    CoffeeSize for HUGE is B -->returns "B"
    CoffeeSize for OVERWHELMING is A--constant specific class body returns "A"
    CoffeeSize for BIG is 8
    CoffeeSize for HUGE is 10
    CoffeeSize for OVERWHELMING is 16
    ------------------------------------