最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java的枚舉,注解和反射(一)

 更新時(shí)間:2021年07月05日 09:06:00   作者:保護(hù)眼睛  
今天小編就為大家分享一篇關(guān)于Java枚舉,注解與反射原理說明,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧

枚舉

什么是枚舉?

枚舉的字面意思就是 一一列舉出來

在數(shù)學(xué)和計(jì)算機(jī)科學(xué)理論中,一個(gè)集的枚舉是列出某些有窮序列集的所有成員的程序,或者是一種特定類型對(duì)象的計(jì)數(shù)。這兩種類型經(jīng)常(但不總是)重疊。是一個(gè)被命名的整型常數(shù)的集合,枚舉在日常生活中很常見,例如表示星期的SUNDAY、MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY就是一個(gè)枚舉。再比如線程的狀態(tài):創(chuàng)建、運(yùn)行、阻塞、等待、消亡,這也是一個(gè)枚舉。

在java中的枚舉也是類似的:

枚舉是在JDK1.5以后引入的。主要用途是:將一組常量組織起來。

當(dāng)需要定義一組常量的時(shí)候就可以使用枚舉。枚舉的對(duì)象是有限的、確定的。

枚舉本身就是一個(gè)類,其構(gòu)造方法默認(rèn)為私有的。

如果枚舉類的對(duì)象只有一個(gè),則可以作為單例模式的一種實(shí)現(xiàn)方式。

枚舉類的實(shí)現(xiàn)

自定義實(shí)現(xiàn)枚舉類

jdk1.5之前使用自定義的方式實(shí)現(xiàn)枚舉類的定義

package enumDemo;
/**
 * user:ypc;
 * date:2021-06-22;
 * time: 18:21;
 * 自定義實(shí)現(xiàn)枚舉類
 */
public class EnumDemo1 {
    public static void main(String[] args) {
        Season spring = Season.SPRING;
        System.out.println(spring);
    }
}
//自定義實(shí)現(xiàn)季節(jié)的枚舉類
class Season {
    //1.首先要求枚舉類是常量,就可以使用 private final 來修飾
    private final String seasonName;
    private final String seasonDesc;
    //2.常量肯定要賦值,提供私有的構(gòu)造方法來初始化常量
    private Season(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
    //3.枚舉的對(duì)象是有限個(gè)的,確定的。所以要提供對(duì)應(yīng)的枚舉對(duì)象
    public static final Season SPRING = new Season("春天", "春暖花開");
    public static final Season SUMMER = new Season("夏天", "夏日炎炎");
    public static final Season AUTUMN = new Season("秋天", "秋高氣爽");
    public static final Season WINTER = new Season("冬天", "冰天雪地");
    //提供獲取枚舉的屬性的方法
    public String getSeasonName() {
        return seasonName;
    }
    public String getSeasonDesc() {
        return seasonDesc;
    }
    @Override
    public String toString() {
        return "Season{" +
                "seasonName='" + seasonName + '\'' +
                ", seasonDesc='" + seasonDesc + '\'' +
                '}';
    }
}

在這里插入圖片描述

使用關(guān)鍵字enum定義枚舉類

jdk1.5引入enum關(guān)鍵字

package enumDemo;
import org.junit.Test;
/**
 * user:ypc;
 * date:2021-06-22;
 * time: 18:40;
 * 使用enum關(guān)鍵字來定義枚舉類
 */
public class EnumDemo2 {
    @Test
    public void test(){
        SeasonEnum spring = SeasonEnum.SPRING;
        System.out.println(spring);
        //枚舉類的父類是
        System.out.println("枚舉類的父類是:"+SeasonEnum.class.getSuperclass().getName());
    }
}
enum SeasonEnum{
    //提供當(dāng)前枚舉類的對(duì)象,之間使用","隔開,最后一個(gè)對(duì)象使用";"隔開
    SPRING("春天","春暖花開"),
    SUMMER("夏天","夏日炎炎"),
    AUTUMN("秋天","秋高氣爽"),
    WINTER("冬天","冰天雪地");

    private final String seasonName;
    private final String seasonDesc;
    private SeasonEnum(String seasonName,String seasonDesc){
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
}

在這里插入圖片描述

Enum的常用方法

package enumDemo;
import org.junit.Test;
/**
 * @author ypc
 * @create 2021-06-22;
 * 枚舉類常用的方法
 */
public class EnumDemo3 {
    @Test
    public void test() {
        //toString方法
        System.out.println(SeasonEnum.SPRING.toString());
        System.out.println("****************************");
        //values方法.
        SeasonEnum[] seasonEnums = SeasonEnum.values();
        System.out.println("季節(jié)枚舉類中的對(duì)象:");
        for (SeasonEnum seasonenum : seasonEnums) {
            System.out.println(seasonenum);
        }
        System.out.println("****************************");
        //線程狀態(tài)中的所有的枚舉的對(duì)象
        Thread.State[] states = Thread.State.values();
        System.out.println("線程狀態(tài)枚舉類中的對(duì)象:");
        for (int i = 0; i < states.length; i++) {
            System.out.println(states[i]);
        }
        System.out.println("****************************");
        //valueOf方法
        SeasonEnum winter = SeasonEnum.valueOf("WINTER");
        System.out.println(winter);
    }
}

在這里插入圖片描述

實(shí)現(xiàn)接口的枚舉類

實(shí)現(xiàn)接口,在枚舉類中實(shí)現(xiàn)抽象方法

interface info {
    void show();
}
enum SeasonEnumImplementsInterface1 implements info {
    //提供當(dāng)前枚舉類的對(duì)象,之間使用","隔開,最后一個(gè)對(duì)象使用";"隔開
    SPRING("春天", "春暖花開"),
    SUMMER("夏天", "夏日炎炎"),
    AUTUMN("秋天", "秋高氣爽"),
    WINTER("冬天", "冰天雪地");

    private final String seasonName;
    private final String seasonDesc;
    private SeasonEnumImplementsInterface1(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
    @Override
    public void show() {
        System.out.println("枚舉類實(shí)現(xiàn)了接口的抽象方法");
    }
}

在這里插入圖片描述

讓接口的每個(gè)枚舉對(duì)象都實(shí)現(xiàn)各自的方法

//枚舉的各個(gè)對(duì)象實(shí)現(xiàn)了接口的抽象方法
enum SeasonEnumImplementsInterface2 implements info {
    //提供當(dāng)前枚舉類的對(duì)象,之間使用","隔開,最后一個(gè)對(duì)象使用";"隔開
    SPRING("春天", "春暖花開") {
        @Override
        public void show() {
            System.out.println("春天來了");
        }
    },
    SUMMER("夏天", "夏日炎炎") {
        @Override
        public void show() {
            System.out.println("夏天到了");
        }
    },
    AUTUMN("秋天", "秋高氣爽") {
        @Override
        public void show() {
            System.out.println("秋天來了");
        }
    },
    WINTER("冬天", "冰天雪地") {
        @Override
        public void show() {
            System.out.println("冬天來了");
        }
    };

    private final String seasonName;
    private final String seasonDesc;
    private SeasonEnumImplementsInterface2(String seasonName, String seasonDesc) {
        this.seasonName = seasonName;
        this.seasonDesc = seasonDesc;
    }
}

在這里插入圖片描述

public class EnumDemo4 {
    @Test
    public void test1(){
        SeasonEnumImplementsInterface1[] SeasonEnumImplementsInterface1s = SeasonEnumImplementsInterface1.values();
        System.out.println("季節(jié)枚舉類中的對(duì)象:");
        for (SeasonEnumImplementsInterface1 seasonEnumImplementsInterface1:SeasonEnumImplementsInterface1s) {
            System.out.println(seasonEnumImplementsInterface1);
            seasonEnumImplementsInterface1.show();
        }
    }
    @Test
    public void test2(){
        SeasonEnumImplementsInterface2[] SeasonEnumImplementsInterface2s = SeasonEnumImplementsInterface2.values();
        System.out.println("季節(jié)枚舉類中的對(duì)象:");
        for (SeasonEnumImplementsInterface2 seasonEnumImplementsInterface2:SeasonEnumImplementsInterface2s) {
            System.out.println(seasonEnumImplementsInterface2);
            seasonEnumImplementsInterface2.show();
        }
    }
}

注解

注解概述

在Java中,注解(Annotation)引入始于Java5,用來描述Java代碼的元信息,通常情況下注解不會(huì)直接影響代碼的執(zhí)行,盡管有些注解可以用來做到影響代碼執(zhí)行。
A

nnotation 其實(shí)就是代碼里的特殊標(biāo)記, 這些標(biāo)記可以在編譯, 類加載, 運(yùn)行時(shí)被讀取, 并執(zhí)行相應(yīng)的處理。通過使用 Annotation,程序員可以在不改變?cè)壿嫷那闆r下, 在源文件中嵌入一些補(bǔ)充信息。

Annotation可以像修飾符一樣使用,可以用來修飾包、類、構(gòu)造器、方法、成員變量、參數(shù)、局部變量的聲明,這些信息被保存在Annotation的“name = value”對(duì)中。

在JavaSE中,注解的使用目的比較簡單,例如標(biāo)記過時(shí)的功能,忽略警告等。
一定的程度上可以說框架 = 注解 + 反射機(jī)制 + 設(shè)計(jì)模式

常見的注解

1.生成文檔相關(guān)的注解

2.在編譯的時(shí)候進(jìn)行格式的檢查

3.跟蹤代碼的依賴性,實(shí)現(xiàn)代替配置文件的功能

package AnnotationDemo;
/**
 * 1.生成文檔相關(guān)的注解
 * @author ypc
 * @create 2021-06-22;
 */
public class AnnotationDemo1 {
}
class B implements A{
    //2.在編譯的時(shí)候進(jìn)行格式的檢查
    @Override
    public void test() {
    }
}
interface A{
    void test();
}
/**
 * 3.跟蹤代碼的依賴性,實(shí)現(xiàn)代替配置文件的功能
 * 未使用注解的時(shí)候
  <servlet>
    <servlet-name>reg</servlet-name>
    <servlet-class>service.RegServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>reg</servlet-name>
    <url-pattern>/reg</url-pattern>
  </servlet-mapping>
 使用注解之后:
 @WebServlet("/reg")
 */

總結(jié)

本篇文章的上半部分就到這里了,希望對(duì)你有所幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!

相關(guān)文章

  • Spring中@Transactional(rollbackFor=Exception.class)屬性用法介紹

    Spring中@Transactional(rollbackFor=Exception.class)屬性用法介紹

    這篇文章介紹了Spring中@Transactional(rollbackFor=Exception.class)屬性的用法,對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-12-12
  • java利用delayedQueue實(shí)現(xiàn)本地的延遲隊(duì)列

    java利用delayedQueue實(shí)現(xiàn)本地的延遲隊(duì)列

    這篇文章主要給大家介紹了java利用delayedQueue實(shí)現(xiàn)本地的延遲隊(duì)列的相關(guān)資料,文中介紹的非常詳細(xì),相信對(duì)大家具有一定的參考價(jià)值,需要的朋友們下面來一起看看吧。
    2017-04-04
  • 使用maven打包生成doc文檔和打包源碼

    使用maven打包生成doc文檔和打包源碼

    這篇文章主要介紹了使用maven打包生成doc文檔和打包源碼的實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Java實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換詳解

    Java實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換詳解

    這篇文章主要為大家詳細(xì)介紹了Java中實(shí)現(xiàn)時(shí)間與字符串互相轉(zhuǎn)換的相關(guān)方法,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2025-04-04
  • Java基于Swing和netty實(shí)現(xiàn)仿QQ界面聊天小項(xiàng)目

    Java基于Swing和netty實(shí)現(xiàn)仿QQ界面聊天小項(xiàng)目

    這篇文章主要為大家詳細(xì)介紹了Java如何利用Swing和netty實(shí)現(xiàn)仿QQ界面聊天小項(xiàng)目,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2022-09-09
  • SpringMVC的自定義攔截器詳解

    SpringMVC的自定義攔截器詳解

    這篇文章主要介紹了SpringMVC的自定義攔截器詳解,攔截器只會(huì)攔截訪問的控制器方法, 如果訪問的是jsp/html/css/image/js是不會(huì)進(jìn)行攔截的,需要的朋友可以參考下
    2023-07-07
  • Java中CyclicBarrier?循環(huán)屏障

    Java中CyclicBarrier?循環(huán)屏障

    這篇文章主要介紹了Java中CyclicBarrier?循環(huán)屏障,可以實(shí)現(xiàn)讓一組線程等待至某個(gè)狀態(tài)屏障點(diǎn)之后再全部同時(shí)執(zhí)行,下面文章分享CyclicBarrier循環(huán)屏障的原理,需要的小伙伴可以參考一下
    2022-05-05
  • Java swing實(shí)現(xiàn)的計(jì)算器功能完整實(shí)例

    Java swing實(shí)現(xiàn)的計(jì)算器功能完整實(shí)例

    這篇文章主要介紹了Java swing實(shí)現(xiàn)的計(jì)算器功能,結(jié)合完整實(shí)例形式分析了java基于swing組件實(shí)現(xiàn)計(jì)算器布局與運(yùn)算功能的具體操作技巧,需要的朋友可以參考下
    2017-12-12
  • Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案

    Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案

    這篇文章主要介紹了Feign遠(yuǎn)程調(diào)用參數(shù)里面內(nèi)容丟失的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • Java數(shù)據(jù)結(jié)構(gòu)與算法之二分查找詳解

    Java數(shù)據(jù)結(jié)構(gòu)與算法之二分查找詳解

    這篇文章主要介紹了Java數(shù)據(jù)結(jié)構(gòu)與算法之二分查找詳解,二分查找算法是一種在有序數(shù)組中查找某一特定元素的搜索算法,其思想就是不斷地將有序查找表“一分為二”,逐漸縮小搜索區(qū)域,進(jìn)而找到目標(biāo)元素,需要的朋友可以參考下
    2023-12-12

最新評(píng)論

襄垣县| 通化县| 凭祥市| 偃师市| 浠水县| 阳春市| 吴川市| 巴楚县| 上虞市| 兴隆县| 沅江市| 额尔古纳市| 仙游县| 革吉县| 饶平县| 达孜县| 丁青县| 文山县| 会理县| 江阴市| 庄浪县| 临朐县| 喀什市| 广西| 遵化市| 高雄县| 剑阁县| 聂拉木县| 平度市| 六盘水市| 五华县| 雅安市| 鞍山市| 兴安县| 玉门市| 都兰县| 宜都市| 神农架林区| 南澳县| 延安市| 旅游|