中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java枚舉案例分析

發布時間:2022-05-26 14:02:51 來源:億速云 閱讀:148 作者:iii 欄目:編程語言

本文小編為大家詳細介紹“Java枚舉案例分析”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Java枚舉案例分析”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。

Java枚舉案例分析

枚舉就是要讓某個類型的變量的取值只能為若干個固定值中的一個,否則編譯器就會報錯,枚舉可以讓編譯器在編譯時就可以控制源程序賦給的非法值,使用普通變量的方式在開發階段無法實現這一目標。
在JDK1.5之后,使用關鍵字enum定義一種新的類型,稱為枚舉類型
枚舉(enum)和類(class)、接口(interface)是同一級別

案例引入

定義一個color,只能定義紅、綠、藍三種顏色

普通方法
Java枚舉案例分析
那么如何解決這種問題,讓color只能在三種顏色中選一種???

Enum類和enum關鍵字

使用enum關鍵字定義的枚舉類,實際上就相當于定義了一個類,此類繼承課Enum類而已。

public enum Color {
    RED,
    GREEN,
    BLUE;}

Java枚舉案例分析

枚舉常用的方法

protected Enum(String name,int ordinal)此構造方法不能被外部直接調用,只能被其子類訪問,此構造方法為自動調用
public final String name()返回枚舉的名字
public String toString()返回枚舉的名字
public final int ordinal()返回枚舉的序號,默認從0開始
public final boolean equals(Object other)判斷兩個枚舉是否相同

代碼

public class EnumTest {
    public static void main(String[] args) {
        //定義一個color變量,只能設置為RED、GREEN、BLUE
        Color color = Color.BLUE;
        System.out.println(color);
        System.out.println(color.name());
        System.out.println(color.toString());//三種方式都是打印名字
        System.out.println(color.ordinal());//返回枚舉的序號RED--0、GREEN--1、BLUE--2

        Color[] values = Color.values();//返回所有枚舉類型
        System.out.println(Arrays.toString(values));
    }}

Java枚舉案例分析

枚舉的基本操作

帶構造方法的枚舉

枚舉的本質是一個繼承Enum類的子類,JVM編譯器把枚舉編譯后生成一個final class

枚舉不允許從外部調用,所以只能是private修飾
Java枚舉案例分析
構造方法只能在對象中調用
Java枚舉案例分析

public enum Color {
    RED(10),
    GREEN(20),
    BLUE;
    private int Number;//屬性

    private Color() {//默認構造方法
        System.out.println("無參構造器被調用了!!!");
    }

    private Color(int Number) {
        this.Number = Number;
        System.out.println("有參構造器被調用了!!!");
    }
    
    public int getNumber(){
        return Number;
	}}

主方法

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.RED;
        System.out.println(color.name());
        System.out.println(color.getNumber());//獲取Number的值
    }}

Java枚舉案例分析

枚舉實現接口

在枚舉類型中,可以繼承接口,實現接口有兩種方法,要么在枚舉類中實現該方法,或者在對象內部實現該方法

方式1:在枚舉對象內部實現接口中的方法

interface info{
    public String getColor();}public enum Color implements info{
    RED{
        @Override
        public String getColor() {return "紅色";}
    },
    GREEN{
        @Override
        public String getColor() {return "綠色";}
    },
    BLUE{
        @Override
        public String getColor() {return "藍色";}
    };}

方式2:在枚舉類中實現接口中的方法

interface info{
    public String getColor();}public enum Color implements info{

    RED,GREEN,BLUE;
    
    @Override
    public String getColor() {
        return null;
    }}

主方法

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.RED;
        System.out.println(color.getColor());
    }}

Java枚舉案例分析

枚舉實現抽象方法

在枚舉類型中,可以定義抽象方法,具體由對象實現

枚舉類

public enum Color {
    RED{
        @Override
        public String getColor() {return "紅色";}
    },
    GREEN{
        @Override
        public String getColor() {return "綠色";}
    },
    BLUE{
        @Override
        public String getColor() {return "藍色";}
    };
    //在枚舉中定義一個抽象方法,通過枚舉對象實現
    public abstract String getColor();}

主方法

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.BLUE;
        System.out.println(color.getColor());
    }}

Java枚舉案例分析

枚舉實現單例模式

枚舉是用來保證數據在指定范圍內的值,如果枚舉中只有一個類型(一個值)的話,枚舉中就只有一個對象,那么就可以實現單例模式。

枚舉類

public enum Singletion {
    SINGLETION;
    public void Method(){
        System.out.println("使用枚舉實現單例模式!!!");
    }}

主方法

public class EnumTest {
    public static void main(String[] args) {
        Singletion singletion=Singletion.SINGLETION;
        singletion.Method();
    }}

Java枚舉案例分析

集合類對枚舉的支持

在JDK1.5之后,對于Set和Map接口而言又增加了兩個新的子類:EnumSetEnumMap兩個子類

EnumSet

一個專門Set實現與枚舉類型一起使用。 枚舉集中的所有元素都必須來自創建集合時明確或隱式指定的單個枚舉類型
EnumSet是一個抽象類,不能直接創建實例對象,但是可以通過方法來使用。Java枚舉案例分析

EnumSet.allOf(Class<E> elementType)把一個枚舉類型全部填充到集合中去
public static <E extends Enum<E>> EnumSet<E> complementOf(EnumSet<E> s)創建與指定枚舉集具有相同元素類型的枚舉集,最初包含此類型的所有元素,該元素 不包含在指定的集合中。
public static <E extends Enum<E>> EnumSet<E> copyOf(EnumSet<E> s)創建與指定的枚舉集相同的元素類型的枚舉集,最初包含相同的元素(如果有)

代碼

import java.util.EnumSet;public class EnumTest {
    public static void main(String[] args) {
        EnumSet<Color> set = EnumSet.allOf(Color.class);//把一個枚舉類型全部填充到集合中去
        for (Color c : set) {
            System.out.println(c.name());
        }
    }}

Java枚舉案例分析

EnumMap

EnumMap一個專門Map實現與枚舉類型鍵一起使用。 枚舉映射中的所有密鑰必須來自創建映射時明確或隱式指定的單個枚舉類型。 枚舉地圖在內部表示為數組。 這種表示非常緊湊和高效。

代碼

import java.util.EnumMap;public class EnumTest {
    public static void main(String[] args) {
        EnumMap<Color, String> map = new EnumMap<>(Color.class);
        map.put(Color.RED, "紅色");
        map.put(Color.GREEN, "綠色");
        map.put(Color.BLUE, "藍色");
        System.out.println(map.get(Color.RED));
    }

Java枚舉案例分析

讀到這里,這篇“Java枚舉案例分析”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

恩施市| 南丹县| 高青县| 昭通市| 贡山| 南宁市| 石台县| 浙江省| 昌平区| 行唐县| 高州市| 宝清县| 息烽县| 密云县| 柳河县| 赤壁市| 蒲城县| 河西区| 乌拉特后旗| 惠东县| 山阳县| 秦安县| 贵定县| 泾川县| 元谋县| 嘉峪关市| 张掖市| 内江市| 昌乐县| 中卫市| 江北区| 瑞昌市| 中阳县| 喀喇沁旗| 定州市| 陆河县| 永修县| 华亭县| 深圳市| 文水县| 龙海市|