首頁 > Java > java教程 > Java基礎歸納之枚舉

Java基礎歸納之枚舉

WBOY
發布: 2022-05-26 11:50:33
轉載
2317 人瀏覽過

本篇文章為大家帶來了關於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基礎歸納之枚舉

列舉的基本運算


Java基礎歸納之枚舉

Java基礎歸納之枚舉#帶建構方法的枚舉

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

Java基礎歸納之枚舉

枚舉不允許從外部調用,所以只能是private修飾

建構方法只能在物件中調用

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();
    }}
登入後複製
############集合類別對枚舉的支援#########在JDK1.5之後,對於Set和Map介面而言又增加了兩個新的子類別:###EnumSet###和###EnumMap ###兩個子類別###

EnumSet

一个专门Set实现与枚举类型一起使用。 枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型
EnumSet是一个抽象类,不能直接创建实例对象,但是可以通过方法来使用。Java基礎歸納之枚舉
EnumSet.allOf(Class<e> elementType)</e>把一个枚举类型全部填充到集合中去
public static <e extends enum>> EnumSet<e> complementOf(EnumSet<e> s)</e></e></e>创建与指定枚举集具有相同元素类型的枚举集,最初包含此类型的所有元素,该元素 不包含在指定的集合中。
public static <e extends enum>> EnumSet<e> copyOf(EnumSet<e> s)</e></e></e>创建与指定的枚举集相同的元素类型的枚举集,最初包含相同的元素(如果有)

代码

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());
        }
    }}</color>
登入後複製

Java基礎歸納之枚舉

EnumMap

EnumMap一个专门Map实现与枚举类型键一起使用。 枚举映射中的所有密钥必须来自创建映射时明确或隐式指定的单个枚举类型。 枚举地图在内部表示为数组。 这种表示非常紧凑和高效。

代码

import java.util.EnumMap;public class EnumTest {
    public static void main(String[] args) {
        EnumMap<color> map = new EnumMap(Color.class);
        map.put(Color.RED, "红色");
        map.put(Color.GREEN, "绿色");
        map.put(Color.BLUE, "蓝色");
        System.out.println(map.get(Color.RED));
    }</color>
登入後複製

Java基礎歸納之枚舉

推荐学习:《java视频教程

以上是Java基礎歸納之枚舉的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:csdn.net
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板