• Java枚举的七种常见用法


    1、用法一:常量

      在JDK1.5之前,我们定义常量都是:publicstaticfianl....。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。

      Java代码

    public enum Color {
    
      RED, GREEN, BLANK, YELLOW
    
    }

    2、用法二:switch

      JDK1.6之前的switch语句只支持int,char,enum类型,使用枚举,能让我们的代码可读性更强。

      Java代码

    enum Signal {
    
          GREEN, YELLOW, RED
    
    }
    
    public class TrafficLight {
    
          Signal color = Signal.RED;
    
          public void change() {
    
          switch (color) {
    
      case RED:
    
          color = Signal.GREEN;
    
          break;
    
      case YELLOW:
    
          color = Signal.RED;
    
          break;
    
       case GREEN:
    
            color = Signal.YELLOW;
    
            break;
    
              }
    
          }
    
      }

    3、用法三:向枚举中添加新方法

      如果打算自定义自己的方法,那么必须在enum实例序列的最后添加一个分号。而且Java要求必须先定义enum实例。

    public enum Color {
    
      RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
    
      // 成员变量
    
      private String name;
    
      private int index;
    
      // 构造方法
    
      private Color(String name, int index) {
    
          this.name = name;
    
          this.index = index;
        
      }
    
      // 普通方法
    
      public static String getName(int index) {
    
          for (Color c : Color.values()) {
    
              if (c.getIndex() == index) {
    
                  return c.name;
    
              }
    
          }
    
          return null;
    
      }
    
      // get set 方法
    
      public String getName() {
    
          return name;
    
      }
    
      public void setName(String name) {
    
          this.name = name;
    
      }
    
      public int getIndex() {
    
          return index;
    
      }
    
      public void setIndex(int index) {
    
          this.index = index;
    
      }
    
    }
            

    4、用法四:覆盖枚举的方法

      下面给出一个toString()方法覆盖的例子。 

    public enum Color {
        RED("红色"), GREEN("绿色"), BLANK("白色"), YELLO("黄色");
        // 成员变量
        private String name;
    
        // 构造方法
        private Color(String name) {
            this.name = name;
        }
    
        // 覆盖方法
        @Override
        public String toString() {
            return this.name;
        }
    }

    5、用法五:实现接口
      所有的枚举都继承自java.lang.Enum类。由于Java不支持多继承,所以枚举对象不能再继承其他类。

      Java代码

    public interface Behaviour {
    
      void print();
    
      String getInfo();
    
    }
    
    public enum Color implements Behaviour{
    
      RED("红色", 1), GREEN("绿色", 2), BLANK("白色", 3), YELLO("黄色", 4);
    
      // 成员变量
    
      private String name;
    
      private int index;
    
      // 构造方法
    
      private Color(String name, int index) {
    
      this.name = name;
    
      this.index = index;
    
      }
    
      //接口方法
    
      @Override
    
      public String getInfo() {
    
          return this.name;
    
      }
    
      //接口方法
    
      @Override
    
      public void print() {
    
          System.out.println(this.index+":"+this.name);
    
      }
    
    }

    6、用法六:使用接口组织枚举

      Java代码

     public interface Food {
    
      enum Coffee implements Food{
    
      BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
    
      }
    
      enum Dessert implements Food{
    
      FRUIT, CAKE, GELATO
    
      }
    
      }

    7、用法七:关于枚举集合的使用
      java.util.EnumSet和java.util.EnumMap是两个枚举集合。EnumSet保证集合中的元素不重复;EnumMap中的key是enum类型,而value则可以是任意类型。

    8、实践

    package com.ylink.cms.pojo.lucene;
    
    import java.util.Date;
    
    public class LuceneContent {
    
        private String id;
    
        private String channelId;
    
        private String title;
    
        public enum LuceneContentType {
            article, channel
        }
    
        private LuceneContentType type;
    
        private String remark;
    
        private String content;
    
        private Date createDate;
    
        private String author;
    
        public String getId() {
            return id;
        }
    
        public void setId(String id) {
            this.id = id;
        }
    
        public String getChannelId() {
            return channelId;
        }
    
        public void setChannelId(String channelId) {
            this.channelId = channelId;
        }
    
        public String getTitle() {
            return title;
        }
    
        public void setTitle(String title) {
            this.title = title;
        }
    
        public String getContent() {
            return content;
        }
    
        public void setContent(String content) {
            this.content = content;
        }
    
        public String getAuthor() {
            return author;
        }
    
        public void setAuthor(String author) {
            this.author = author;
        }
    
        public LuceneContentType getType() {
            return type;
        }
    
        public void setType(LuceneContentType type) {
            this.type = type;
        }
    
        public Date getCreateDate() {
            return createDate;
        }
    
        public void setCreateDate(Date createDate) {
            this.createDate = createDate;
        }
    
        public String getRemark() {
            return remark;
        }
    
        public void setRemark(String remark) {
            this.remark = remark;
        }
    
        @Override
        public String toString() {
            return "LuceneContent [id=" + id + ", channelId=" + channelId
                    + ", title=" + title + ", type=" + type + ", remark=" + remark
                    + ", content=" + content + ", createDate=" + createDate
                    + ", author=" + author + "]";
        }
    
    }
    package com.ylink.cms.util;
    
    import java.util.ArrayList;
    import java.util.List;
    
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    
    import com.ylink.cms.pojo.channel.Channel;
    import com.ylink.cms.pojo.content.Content;
    import com.ylink.cms.pojo.lucene.LuceneContent;
    import com.ylink.cms.pojo.lucene.LuceneContent.LuceneContentType;
    
    public class LuceneContentTransUtil {
        private static final Logger logger = LoggerFactory.getLogger(LuceneContentTransUtil.class);
        /**将栏目转化可索引内容*/
        public static LuceneContent parseContent(Content content){
            LuceneContent luceneContent = new LuceneContent();
            luceneContent.setAuthor(content.getAuthor());
            luceneContent.setChannelId(String.valueOf(content.getChannelId()));
            luceneContent.setContent(content.getContentDetail());
            luceneContent.setCreateDate(content.getCrtdate());
            luceneContent.setId(String.valueOf(content.getContentId()));
            luceneContent.setRemark(content.getRemark());
            luceneContent.setTitle(content.getContentTitle());
            luceneContent.setType(LuceneContentType.article);
            return luceneContent;
        }
        /**内容可索引化*/
        public static LuceneContent praseChannel(Channel channel){
            LuceneContent luceneContent = new LuceneContent();
            luceneContent.setAuthor("");
            luceneContent.setChannelId(String.valueOf(channel.getChannelId()));
            luceneContent.setContent(channel.getChannelIntro());
            luceneContent.setCreateDate(channel.getCrtdate());
            luceneContent.setId(String.valueOf(channel.getChannelId()));
            luceneContent.setRemark(channel.getChannelIntro());
            luceneContent.setTitle(channel.getChannelName());
            luceneContent.setType(LuceneContentType.channel);
            return luceneContent;
        }
        
        public static List<LuceneContent> praseChannelsOrContents(List<Channel> channels, List<Content> contents){
            
            List<LuceneContent> luceneContents = new ArrayList<LuceneContent>();
            /**将栏目转化可索引内容*/
            if(null != channels && channels.size()>=1){
                
                for(int i =0; i< channels.size(); i++){
                    
                    LuceneContent lc = praseChannel(channels.get(i));
                    luceneContents.add(lc);
                }
            }
            /**内容可索引化*/
            if(null != contents && contents.size()>=1){
                
                for(int i =0; i< contents.size(); i++){
                    
                    LuceneContent lc = parseContent(contents.get(i));
                    luceneContents.add(lc);
                }
            }
            logger.info("luceneContents.size(): "+luceneContents.size());
            return luceneContents;
        }
        
    }
  • 相关阅读:
    C语言 assert
    Java6上开发WebService
    unity3d绘制贴图
    unity3d物理引擎
    unity3dVisual Studio Tools for Unity快捷键
    unity3d小案例之角色简单漫游
    unity3d射线(Ray)
    unity3d准备工作
    unity3d编辑器结构
    unity3d碰撞检测
  • 原文地址:https://www.cnblogs.com/rookie-newbie/p/7918591.html
Copyright © 2020-2023  润新知