对enum类型谈点认识

首先这里定义一个enum,表示逻辑的“是”、“否”、“未知”三种状态:
public enum LogicType {
      NO,//否
      YES,//是
      UNKNOWN;//不确定
     
      @Override
      public String toString(){
       switch(this){
          case NO:
            return "否";
          case YES:
           return "是";
          case UNKNOWN:  
           return "未知";
       }
       return super.toString();
      }
}
如果不喜欢在Override的时候使用switch(..) case的结构,可以修改定义为:
public enum LogicType {
      NO("否"),//否
      YES("是"),//是
      UNKNOWN("未知");//不确定
      private String name = null;
public void setName(String name){
this.name = name;
}
public String getName(){



return this.name;
}
      LogicType(String name){

this.name = name;
}
      @Override
      public String toString(){

return this.name;

      }
}
最后需要说的是,如果我们使用hibernate来影射某一数据列为enum类型的话,如果选择自动列数据类型转换,则:
如果数据库的字段为varchar2,则存储相应的名字到数据库这里是COL,反之,如果数据库的字段类型为number
则会调用emun.ordinal()来存储数据。为了改变ordinal()的返回类型,我们可以变通的加入code到enum中:然后
设计构造方法:LogicType(name,code){this.name=name;this.code=code;};然后在需要存储的时候直接调用
getCode()来得到相应的值,但遗憾的是如果使用save(Object obj)方法似乎不能存储合适的数据(如果obj有个field)
为enum类型的话。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值