java 枚举问题!
下面代码是 corejava8中的实例代码, Size.class有点不懂,我看了枚举里面没有这个变量。谢谢!
public class EnumTest
{
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
System.out.print("Enter a size: (SMALL, MEDIUM, LARGE, EXTRA_LARGE) ");
String input = in.next().toUpperCase();
Size size = Enum.valueOf(, input);
System.out.println("size=" + size);
System.out.println("abbreviation=" + size.getAbbreviation());
if (size == Size.EXTRA_LARGE)
System.out.println("Good job--you paid attention to the _.");
}
}
------解决方案--------------------Size需要定义!
------解决方案--------------------enum Size {
实际上enum声明定义的类型就是一个类。
而这些类都是类库中Enum类的子类(java.lang.Enum<E>),它们继承了这个Enum中所有方法。
参见:
http://www.cnblogs.com/frankliiu-java/archive/2010/12/07/1898721.html
------解决方案--------------------if (size == Size.EXTRA_LARGE)
应该改为if (size .equals(Size.EXTRA_LARGE)))
------解决方案--------------------if (size == Size.EXTRA_LARGE)
应该改为if (size .equals(Size.EXTRA_LARGE))
------解决方案--------------------
------解决方案--------------------首先 “enum Size” 实际上就定义了一个 类:Size,它继承了 java.lang.Enum 以及 java.lang.Object
Size.class 这是个属性,所有类都会有这个属性,你可以试试看: Object.class 或者 String.class
至于values()方法,前面也说了是编译时生成的,不是继承自Enum的。
你可以用 javap 来查看下Size所生成的class文件就知道了啊,这里有例子:
http://wenwen.soso.com/z/q273119133.htm