【发布时间】:2011-05-11 06:07:14
【问题描述】:
enum Enum1
{
BIG(8), HUGE(10)
{
public String getName()
{
return "Huge";
}
public String getContry()
{
return "India";
}//additional Method
},
OVERWHELMING(16)
{
public String getName()
{
return "OVERWHELMING";
}
};
private int ounces;
public int getOunes()
{
return ounces;
}
public String getName()
{
return "Ponds";
}
Enum1(int ounces1)
{
ounces = ounces1;
}
}
class EnumAsInnerClass
{
Enum1 enumInnerClass;
public static void main(String[] args)
{
EnumAsInnerClass big = new EnumAsInnerClass();
big.enumInnerClass = Enum1.BIG;
EnumAsInnerClass over = new EnumAsInnerClass();
over.enumInnerClass = Enum1.OVERWHELMING;
EnumAsInnerClass huge = new EnumAsInnerClass();
huge.enumInnerClass = Enum1.HUGE;
System.out.println(big.enumInnerClass.getName());//Ponds
System.out.println(over.enumInnerClass.getName());//OVERWHELMING
System.out.println(huge.enumInnerClass.getName());//Huge
}
}
考虑上面的例子。如何调用方法 getCountry for HUGE?
如果没有办法调用这个方法,为什么Java会认为它是合法的?
【问题讨论】:
-
由于
enum的整个想法是基于它的所有值都以统一的方式起作用的事实,我认为仅在单个值上实现方法不是一个好主意(或在值的子集上,通常)。为什么要这样做?