1.自己写的enum都继承于Enum,所以就不能继承别的类,只能实现接口。
2.我们可以使用.values()方法遍历enum,但是一旦我们向上转化,把自己的enum赋值给Enum,就不可以使用values()。因为Enum方法中没有values()方法,子类中的方法是编译器插入到子类enum中的static方法,我们可以使用类中的getEnumConstants()
代码如下
package EnumPackage; enum Search{HITHER,YON} public class UpcastEnum { public static void main(String[] args){ Enum e=Search.HITHER; for(Enum en:e.getClass().getEnumConstants()){ System.out.println(en); } } }
结果:
HITHER YON 3.注意由于getEnumConstants()方法是Class中的,所有也可以在非Enum类中调用,只不过一旦使用值就会报空指针
代码如下:
package EnumPackage; public class NonNum { public static void main(String[] args){ Class<Integer> intClass=Integer.class; try{ for(Object en:intClass.getEnumConstants()){ System.out.println(en); } }catch(Exception e){ System.out.println(e); } } }
结果:
java.lang.NullPointerException
