Heim  >  Artikel  >  Java  >  Grundlegende Java-Induktionsaufzählung

Grundlegende Java-Induktionsaufzählung

WBOY
WBOYnach vorne
2022-05-26 11:50:332307Durchsuche

Dieser Artikel vermittelt Ihnen relevantes Wissen über Java, in dem hauptsächlich Probleme im Zusammenhang mit der Aufzählung vorgestellt werden, einschließlich der grundlegenden Operationen der Aufzählung, der Unterstützung der Aufzählung durch Sammlungsklassen usw. Lassen Sie uns gemeinsam etwas darüber lernen. Schauen Sie es sich an und hoffe, es hilft allen.

Grundlegende Java-Induktionsaufzählung

Empfohlene Studie: „Java-Video-Tutorial

Aufzählung soll zulassen, dass der Wert eines bestimmten Variablentyps nur einer von mehreren festen Werten ist, andernfalls meldet der Compiler einen Fehler, Aufzählung Dies ermöglicht Der Compiler kontrolliert die vom Quellprogramm zur Kompilierungszeit zugewiesenen illegalen Werte. Dieses Ziel kann während der Entwicklungsphase nicht durch die Verwendung gewöhnlicher Variablen erreicht werden.
Verwenden Sie nach JDK1.5 das Schlüsselwort enum, um einen neuen Typ zu definieren, der als Aufzählungstyp bezeichnet wird.
Aufzählung (Aufzählung), Klasse (Klasse) und Schnittstelle (Schnittstelle) befinden sich auf derselben Ebene.

Einführung in den Fall

Um eine Farbe zu definieren, können nur drei Farben Rot, Grün und Blau definiert werden.

Gemeinsame Methode. Wie kann dieses Problem gelöst werden, sodass die Farbe nur eine der drei Farben auswählen kann? ? ?
Grundlegende Java-Induktionsaufzählung
Enum-Klasse und Enum-SchlüsselwortDie mit dem Enum-Schlüsselwort definierte Aufzählungsklasse entspricht tatsächlich der Definition einer Klasse, die nur die Enum-Klasse erbt.

public enum Color {
    RED,
    GREEN,
    BLUE;}

Häufig aufgezählte Methoden

protected Enum(String name,int ordinal)Dieser Konstruktor kann nicht direkt von außen aufgerufen werden und kann nur von seinen Unterklassen aufgerufen werden Methode wird automatisch aufgerufenGrundlegende Java-Induktionsaufzählungpublic final String name()Gibt den Namen der Aufzählung zurück

public String toString()Gibt den Namen der Aufzählung zurück

public final int ordinal( )Gibt die Seriennummer der Aufzählung zurück, standardmäßig beginnend bei 0

public final boolean equals(Object other)Bestimmen Sie, ob zwei Aufzählungen gleich sind

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));
    }}

Grundlegende Java-Induktionsaufzählung

枚举的基本操作

带构造方法的枚举

枚举的本质是一个继承Enum类的子类,JVM编译器把枚举编译后生成一个final class

枚举不允许从外部调用,所以只能是private修饰
Grundlegende Java-Induktionsaufzählung
构造方法只能在对象中调用
Grundlegende Java-Induktionsaufzählung

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的值
    }}

Grundlegende Java-Induktionsaufzählung

枚举实现接口

在枚举类型中,可以继承接口,实现接口有两种方法,要么在枚举类中实现该方法,或者在对象内部实现该方法

方式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());
    }}

Grundlegende Java-Induktionsaufzählung

枚举实现抽象方法

在枚举类型中,可以定义抽象方法,具体由对象实现

枚举类

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());
    }}

Grundlegende Java-Induktionsaufzählung

枚举实现单例模式

枚举是用来保证数据在指定范围内的值,如果枚举中只有一个类型(一个值)的话,枚举中就只有一个对象,那么就可以实现单例模式。

枚举类

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();
    }}

Grundlegende Java-Induktionsaufzählung

集合类对枚举的支持

在JDK1.5之后,对于Set和Map接口而言又增加了两个新的子类:EnumSetEnumMap

Code🎜🎜
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>
🎜Bildbeschreibung hier einfügen🎜🎜Grundlegende Operationen von Aufzählungen🎜 🎜Mit Struktur Aufzählung von Methoden🎜🎜🎜Das Wesentliche einer Aufzählung ist eine Unterklasse, die die Enum-Klasse erbt. Der JVM-Compiler kompiliert die Aufzählung und generiert eine endgültige Klasse🎜🎜🎜🎜Die Aufzählung ist nicht zulässig muss von außen aufgerufen werden, daher kann es nur eine private Änderung sein🎜🎜 Hier Bildbeschreibung einfügen🎜🎜Konstruktormethoden können nur in Objekten aufgerufen werden🎜🎜Hier Bildbeschreibung einfügen🎜
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>
🎜🎜Hauptmethode🎜🎜rrreee🎜bei Bildbeschreibung hier einfügen 🎜🎜Aufzählung implementiert die Schnittstelle🎜🎜🎜Im Aufzählungstyp können Sie die Schnittstelle erben. Es gibt zwei Möglichkeiten, die Schnittstelle zu implementieren: Entweder implementieren Sie die Methode in der Aufzählungsklasse, oder implementieren Sie die Methode innerhalb des Objekts 🎜🎜🎜🎜Methode 1: Implementieren Sie die Methoden in der Schnittstelle innerhalb des Aufzählungsobjekts🎜🎜rrreee🎜🎜Methode 2: Implementieren Sie die Methoden in der Schnittstelle in der Aufzählungsklasse🎜🎜rrreee🎜🎜Hauptmethode🎜 🎜rrreee🎜Bildbeschreibung hier einfügen🎜🎜Enumeration implementiert abstrakte Methoden 🎜🎜🎜In der Aufzählung Im Aufzählungstyp können abstrakte Methoden definiert werden, die durch Objekte implementiert werden 🎜🎜🎜🎜Aufzählungsklasse🎜🎜rrreee🎜🎜Hauptmethode🎜🎜rrreee🎜Bildbeschreibung hier einfügen🎜🎜Aufzählung implementiert den Singleton-Modus🎜🎜🎜Aufzählung wird verwendet, um sicherzustellen, dass die Daten innerhalb der angegebenen Werte liegen Wenn die Aufzählung nur einen Typ (einen Wert) enthält und die Aufzählung nur ein Objekt enthält, kann das Singleton-Muster implementiert werden. 🎜🎜🎜🎜Aufzählungsklasse🎜🎜rrreee🎜🎜Hauptmethode🎜🎜rrreee🎜🎜🎜Set-Klassenunterstützung für Aufzählungen🎜🎜🎜Nach JDK1.5 wurden den Set- und Map-Schnittstellen zwei neue Unterklassen hinzugefügt: EnumSet und EnumMap sind zwei Unterklassen🎜

EnumSet

一个专门Set实现与枚举类型一起使用。 枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型
EnumSet是一个抽象类,不能直接创建实例对象,但是可以通过方法来使用。Grundlegende Java-Induktionsaufzählung
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>

Grundlegende Java-Induktionsaufzählung

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>

Grundlegende Java-Induktionsaufzählung

推荐学习:《java视频教程

Das obige ist der detaillierte Inhalt vonGrundlegende Java-Induktionsaufzählung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen