日期:2014-05-20  浏览次数:20588 次

看不懂的一个小程序
package myjava;

public class Myclass
{
  public static void main(String[] args)
  {
  for(Spiciness s:Spiciness.values())
  {
  System.out.println(s+",ordinal "+s.ordinal());
  }
  }
}


enum Spiciness
{
  NOT, MILD, MEDIUM, HOT, FLAMING
}


Spiciness.values()这里values(),ordinal(),都是从哪来的,APi没查到,谁给讲讲

------解决方案--------------------
ordinal(),返回枚举常量的序数,初始序数为零,这是个final类型的方法!
------解决方案--------------------
我帮你下面加了个int数组的输出,int数组输出应该看得懂,给你对照了看下.Spiciness.values()对应数组m的集合,s.ordinal()返回int类型,输出的是序列.

Java code
public   class   Myclass 
{ 
        public   static   void   main(String[]   args) 
        { 
                for(Spiciness   s:Spiciness.values()) 
                { 
                        System.out.println(s+",ordinal   "+s.ordinal()); 
                } 
                int[] m={1,2,3,4,5};
                for(int i:m){
                    System.out.println(i+", ");
                }
        } 
} 


enum   Spiciness 
{ 
        NOT,   MILD,   MEDIUM,   HOT,   FLAMING 
}

------解决方案--------------------
拜托!不是有个类叫enum!而是有一个和类类似的东西叫enum!
enum是个关键字,不是一个类。
用enum定义的结构也会编译成.class文件,就像interface也会编译成.class文件一样。

enum定义好了以后可以像使用类一样来使用它,里面的成员相当于类的静态属性(但不能被改变),values()是enum固有的一个方法。
谁说一个方法一定要出现在类的定义中才可以使用??请问,你定义的哪个数组中有length这个属性?你不是一直在用它吗?
很多属性和方法是底层相关的,是编译器在编译的时候实现的。