解决方案 »

  1.   

    很简单的枚举啊。public class TestLogger {
    public static void main(String[] args) {
    System.out.println(DIR.LEFT);
    System.out.println(DIR.RIGHT);
    }
    static enum DIR{
    LEFT,RIGHT,UP,DOWM;
    }
    }
      

  2.   

    你那代码写得有点2吧。枚举正常使用就行了。public enum MobileOSType {
                    IOS, ANDROID, WEB
            }
      

  3.   

    我想我大概知道什么问题了,因为那是android,所以不能这样写if(1==MobileOSType.IOS){},j2se可以这样写么?
      

  4.   

    如果我想使用
    switch语句,String形式可以么?
    而如果
    private static int Ready=0;
    private static String OnHold=1; 
    这样的话,你觉得看着舒服么?另外,你如果连续用5个6个if else语句,你不觉得难受么
      

  5.   

    MobileOSType.IOS是一个类,怎么可能和1比较,应该是if(1==MobileOSType.IOS.ordinal()){},
      

  6.   

    MobileOSType.IOS是一个类,怎么可能和1比较,应该是if(1==MobileOSType.IOS.ordinal()){},这就是java的问题
    你没想过为什么这个不是一个int,而是一个类么,我写了5年.net,所以从来没觉得ios应该是个类啊,我5年来大部分的需求就是if(ios=1),为什么ios也不能自动转为int?所以我1楼的写法就是最简洁,能调用的写法了,写复杂,以后自己或别人调用就方便了,如果不这样写,根本没法用,反正我看遍历也是很不爽的。也没有写5,6个if,我看过不少java的代码是写5,6个if的,虽然也可以用其他写法,也没有很不爽, 因为当时项目赶或者什么原因真的需要!
      

  7.   

    1=ios只是个比喻,也不是说项目中就这么写
      

  8.   

        public static FruitEnum valueOf(int value) {    //    手写的从int到enum的转换函数
    你这边的value作用是序号吗?就是和枚举关联的int型整数,还是有其他含义?
      

  9.   

    枚举不知这样用的,看一下TimeUnit的代码,所有方法看java.lang.Enum
    可以实现接口,不能继承。
    this.ordinal(); // 顺序号,从0开始
    this.name(); // 枚举字符串形式
    UserTypeEnum Customer = UserTypeEnum.values()[1]; // 通过class获取所有枚举数组,再根据下标活动具体哪个枚举对象
    Customer =UserTypeEnum.valueOf("Customer"); 
    Class clazz=UserTypeEnum.class;
    Customer =Enum.valueOf(clazz, "Customer");
      

  10.   

    Java的Enum不是简单的Enum,应该可以理解为对象池。
      

  11.   

    enum FruitEnum {
        APPLE, ORANGE;
    }========FruitEnum.APPLE.ordinal();  // 0
    FruitEnum.ORANGE.ordinal(); // 1FruitEnum.values()[0]; // APPLE
    FruitEnum.values()[1]; // ORANGE这都是枚举的基本用法,枚举是类,可以实现接口,并且是常用的实例化控制手段,很多单例写成枚举。吐槽之前至少先入门。
      

  12.   

    枚举的作用是为了类型安全,可以不让非法的数据作为参数传入。当然,采取这样的方法是可行的:public static final String READY = "0";
    public static final String ON_HOLD = "1"; 如果这样用的话,对于调用者来说,可以传个 "abc" 也是未偿不可的。如果采用枚举的话,就不能想使用什么就使用什么了。另外,枚举有很多使用方法,可以在枚举中声明抽象方法,在不同的枚举值中实现该方法,以达到工厂方法的目的。PS:使用枚举时,很少会使用其序号值,一般直接使用其枚举量。当然了,Java 中的枚举只是一颗语法糖而已,在编译后的字节码与常量枚举类所产生的效果是一致的。语法都很简单,就看怎么去灵活运用了,这才是技术人员的根本。
      

  13.   

    你根本就不需要枚举成员具体的值  直接定义就行  根本用不着int那些东西
      

  14.   

    java1.5吸收c的优点加入枚举,提倡使用。本人也一直在用分享下:  public static FruitEnum valueOf(int value) {   
         FruitEnum[] fs = FruitEnum.values();
         for (FruitEnum f:fs) {
    if(f.value==value)return f;
    }
    return null;
      }
    这么写好点;还有如果只是个1,2 的就别用构造函数,直接enum FruitEnum {
        APPLE, ORANGE;
    }
    当还有其他值得时候用构造函数如下:
    package ass;enum FruitEnum {
        APPLE(1,"红色"), ORANGE(2,"黄色");       private int value = 0;
        private String desc;
        private FruitEnum(int value,String desc) {   
            this.value = value;
            this.desc = desc;
        }    public static FruitEnum valueOf(int value) {   
         FruitEnum[] fs = FruitEnum.values();
         for (FruitEnum f:fs) {
    if(f.value==value)return f;
    }
    return null;
        }    public int value() {
            return this.value;
        }
        
        public static void main(String[] args) {
        
    }
    }这时候用构造函数才优雅。
    欢迎加入java技术交流群:60840475 进行讨论。