Java中枚举类的定义以及使用

 


 看到这个标题,很多人不禁要问---什么是枚举类而且为什么用枚举类呢?那是因为,一些方法在运行时,它需要的数据不能是任意的,而必须是一定范围内的值,此类问题在JDK5以前采用自定义带有枚举功能的类解决,Java5以后可以直接使用枚举予以解决。

    举个简单的例子,我们每个人都有性别,分为“男”和“女”两种,为了限定这两种情况我们就必须限定这两种情况。下面就请大家看看怎样几种手动的实现枚举的方法:

    Person类:

 
  1. //手动实现枚举

  2. public class Person {

  3. private String sex;

  4.  
  5. //利用正则表达式来限制

  6. public void setSex(String sex) {

  7. if(sex.matches("[男女]")){

  8. System.out.println("此性别可以识别!");

  9. }else{

    扫描二维码关注公众号,回复: 3943689 查看本文章
  10. System.out.println("此性别不可识别!");

  11. //throw new RuntimeException("此性别不可识别!");

  12. }

  13. }

  14.  
  15. public String toString() {

  16. return "Person [sex=" + sex + "]";

  17. }

  18.  
  19. }


   测试类:

 
  1. import domain.Person;

  2.  
  3. public class PersonTest {

  4. public static void main(String[] args) {

  5. Person p=new Person();

  6. p.setSex("人妖");

  7. System.out.println(p.toString());

  8. }

  9. }

  输出效果:

   手动实现枚举类:

          通过private 将构造器隐藏起来

          把这个类的所有可能实例都使用public static final 修饰

          属性不应允许被改动, 所以应该使用 private final 修饰

   Sex类:

 
  1. public class Sex {

  2. // 性别男

  3. public static final Sex m = new Sex("男");

  4. // 性别女

  5. public static final Sex f = new Sex("女");

  6. private final String value;

  7.  
  8. private Sex(String value) {

  9. this.value = value;

  10. }

  11.  
  12. // 让外界访问所定义的性别

  13. public String getValue() {

  14. return value;

  15. }

  16. }

  测试类:

 
  1. public class Sex {

  2. // 性别男

  3. public static final Sex m = new Sex("男");

  4. // 性别女

  5. public static final Sex f = new Sex("女");

  6. private final String value;

  7.  
  8. private Sex(String value) {

  9. this.value = value;

  10. }

  11.  
  12. // 让外界访问所定义的性别

  13. public String getValue() {

  14. return value;

  15. }

  16. }


  输出效果:


猜你喜欢

转载自blog.csdn.net/neco2011/article/details/83616814