Table des matières
Case Présentation
Classe Enum et mot-clé enum
Méthodes couramment énumérées
枚举的基本操作
带构造方法的枚举
枚举实现接口
枚举实现抽象方法
枚举实现单例模式
集合类对枚举的支持
EnumSet
EnumMap
Maison Java javaDidacticiel Énumération d'induction de base Java

Énumération d'induction de base Java

May 26, 2022 am 11:50 AM
java

Cet article vous apporte des connaissances pertinentes sur java, qui présente principalement les problèmes liés à l'énumération, y compris les opérations de base de l'énumération, la prise en charge de l'énumération par classes de collection, etc.

Énumération d'induction de base Java

Étude recommandée : "Tutoriel vidéo Java"

L'énumération consiste à permettre à la valeur d'un certain type de variable d'être seulement une parmi plusieurs valeurs fixes, sinon le compilateur signalera une erreur, énumération Cela permet le compilateur pour contrôler les valeurs illégales attribuées par le programme source au moment de la compilation. Cet objectif ne peut pas être atteint pendant la phase de développement en utilisant des variables ordinaires.
Après JDK1.5, utilisez le mot-clé enum pour définir un nouveau type, appelé type d'énumération
L'énumération (enum), la classe (class) et l'interface (interface) sont au même niveau

Case Présentation

pour définir une couleur, seules trois couleurs de rouge, vert et bleu peuvent être définies

méthode commune
Énumération dinduction de base Java
Alors comment résoudre ce problème pour que la couleur ne puisse choisir qu'une des trois couleurs ? ? ?

Classe Enum et mot-clé enum

La classe d'énumération définie à l'aide du mot-clé enum équivaut en fait à définir une classe, qui hérite uniquement de la classe Enum.

public enum Color {
    RED,
    GREEN,
    BLUE;}
Copier après la connexion

Énumération dinduction de base Java

Méthodes couramment énumérées

protected Enum(String name,int ordinal)Ce constructeur ne peut pas être appelé directement de l'extérieur et n'est accessible que par ses sous-classes Ce constructeur Le. la méthode est automatiquement appeléeprotected 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));
    }}
Copier après la connexion

Énumération dinduction de base Java

枚举的基本操作

带构造方法的枚举

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

枚举不允许从外部调用,所以只能是private修饰
Énumération dinduction de base Java
构造方法只能在对象中调用
Énumération dinduction de base 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;
	}}
Copier après la connexion

主方法

public class EnumTest {
    public static void main(String[] args) {
        Color color = Color.RED;
        System.out.println(color.name());
        System.out.println(color.getNumber());//获取Number的值
    }}
Copier après la connexion

Énumération dinduction de base 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 "蓝色";}
    };}
Copier après la connexion

方式2:在枚举类中实现接口中的方法

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

    RED,GREEN,BLUE;
    
    @Override
    public String getColor() {
        return null;
    }}
Copier après la connexion

主方法

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

Énumération dinduction de base 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();}
Copier après la connexion

主方法

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

Énumération dinduction de base Java

枚举实现单例模式

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

枚举类

public enum Singletion {
    SINGLETION;
    public void Method(){
        System.out.println("使用枚举实现单例模式!!!");
    }}
Copier après la connexion

主方法

public class EnumTest {
    public static void main(String[] args) {
        Singletion singletion=Singletion.SINGLETION;
        singletion.Method();
    }}
Copier après la connexion

Énumération dinduction de base Java

集合类对枚举的支持

在JDK1.5之后,对于Set和Map接口而言又增加了两个新的子类:EnumSetEnumMappublic final String name()Renvoie le nom de l'énumération

public String toString()Renvoie le nom de l'énumération🎜public final int ordinal( )Renvoie le numéro de série de l'énumération, en commençant à 0 par défaut🎜public final boolean equals(Object other)Détermine si deux énumérations sont identiques🎜🎜🎜🎜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>
Copier après la connexion
Copier après la connexion
🎜Insérer la description de l'image ici🎜🎜Opérations de base des énumérations🎜 🎜Avec structure Énumération des méthodes🎜🎜🎜L'essence d'une énumération est une sous-classe qui hérite de la classe Enum. Le compilateur JVM compile l'énumération et génère une classe finale🎜🎜🎜🎜L'énumération n'est pas autorisée. à appeler de l'extérieur, il ne peut donc s'agir que d'une modification privée🎜🎜 Insérez la description de l'image ici🎜🎜Les méthodes de construction ne peuvent être appelées que dans des objets🎜🎜Insérer ici la description de l'image🎜
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>
Copier après la connexion
Copier après la connexion
🎜🎜Méthode principale🎜🎜rrreee🎜at Insérer la description de l'image ici 🎜🎜L'énumération implémente l'interface🎜🎜🎜Dans le type énumération, vous pouvez hériter de l'interface. Il existe deux façons d'implémenter l'interface, soit d'implémenter la méthode dans la classe énumération, ou implémentez la méthode à l'intérieur de l'objet 🎜🎜🎜🎜Méthode 1 : Implémentez les méthodes dans l'interface à l'intérieur de l'objet d'énumération🎜🎜rrreee🎜🎜Méthode 2 : Implémentez les méthodes dans l'interface dans la classe d'énumération🎜🎜rrreee🎜🎜Méthode principale🎜 🎜rrreee🎜Insérer la description de l'image ici🎜🎜L'énumération implémente des méthodes abstraites 🎜🎜🎜Dans l'énumération Dans le type énumération, vous pouvez définir des méthodes abstraites, qui sont spécifiquement implémentées par des objets🎜🎜🎜🎜classe d'énumération🎜🎜rrreee🎜🎜méthode principale🎜🎜rrreee🎜Insérer la description de l'image ici🎜🎜L'énumération implémente le mode singleton🎜🎜🎜L'énumération est utilisée pour garantir que les données se trouvent dans le plage spécifiée.Si l'énumération S'il n'y a qu'un seul type (une valeur) dans l'énumération, alors il n'y a qu'un seul objet dans l'énumération, alors le modèle singleton peut être implémenté. 🎜🎜🎜🎜Classe d'énumération🎜🎜rrreee🎜🎜Méthode principale🎜🎜rrreee🎜Insérer la description de l'image ici🎜🎜Prise en charge des classes Set pour les énumérations🎜🎜🎜Après JDK1.5, deux nouvelles sous-classes ont été ajoutées aux interfaces Set et Map : EnumSet et EnumMap sont deux sous-classes🎜

EnumSet

一个专门Set实现与枚举类型一起使用。 枚举集中的所有元素都必须来自创建集合时明确或隐式指定的单个枚举类型
EnumSet是一个抽象类,不能直接创建实例对象,但是可以通过方法来使用。Énumération dinduction de base 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>
Copier après la connexion
Copier après la connexion

Énumération dinduction de base 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>
Copier après la connexion
Copier après la connexion

Énumération dinduction de base Java

推荐学习:《java视频教程

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Guide du nombre de Smith en Java. Nous discutons ici de la définition, comment vérifier le numéro Smith en Java ? exemple avec implémentation de code.

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Dans cet article, nous avons conservé les questions d'entretien Java Spring les plus posées avec leurs réponses détaillées. Pour que vous puissiez réussir l'interview.

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Java 8 présente l'API Stream, fournissant un moyen puissant et expressif de traiter les collections de données. Cependant, une question courante lors de l'utilisation du flux est: comment se casser ou revenir d'une opération FOREAK? Les boucles traditionnelles permettent une interruption ou un retour précoce, mais la méthode Foreach de Stream ne prend pas directement en charge cette méthode. Cet article expliquera les raisons et explorera des méthodes alternatives pour la mise en œuvre de terminaison prématurée dans les systèmes de traitement de flux. Lire plus approfondie: Améliorations de l'API Java Stream Comprendre le flux Forach La méthode foreach est une opération terminale qui effectue une opération sur chaque élément du flux. Son intention de conception est

Horodatage à ce jour en Java Horodatage à ce jour en Java Aug 30, 2024 pm 04:28 PM

Guide de TimeStamp to Date en Java. Ici, nous discutons également de l'introduction et de la façon de convertir l'horodatage en date en Java avec des exemples.

Programme Java pour trouver le volume de la capsule Programme Java pour trouver le volume de la capsule Feb 07, 2025 am 11:37 AM

Les capsules sont des figures géométriques tridimensionnelles, composées d'un cylindre et d'un hémisphère aux deux extrémités. Le volume de la capsule peut être calculé en ajoutant le volume du cylindre et le volume de l'hémisphère aux deux extrémités. Ce tutoriel discutera de la façon de calculer le volume d'une capsule donnée en Java en utilisant différentes méthodes. Formule de volume de capsule La formule du volume de la capsule est la suivante: Volume de capsule = volume cylindrique volume de deux hémisphères volume dans, R: Le rayon de l'hémisphère. H: La hauteur du cylindre (à l'exclusion de l'hémisphère). Exemple 1 entrer Rayon = 5 unités Hauteur = 10 unités Sortir Volume = 1570,8 unités cubes expliquer Calculer le volume à l'aide de la formule: Volume = π × r2 × h (4

PHP vs Python: comprendre les différences PHP vs Python: comprendre les différences Apr 11, 2025 am 12:15 AM

PHP et Python ont chacun leurs propres avantages, et le choix doit être basé sur les exigences du projet. 1.Php convient au développement Web, avec une syntaxe simple et une efficacité d'exécution élevée. 2. Python convient à la science des données et à l'apprentissage automatique, avec une syntaxe concise et des bibliothèques riches.

PHP: un langage clé pour le développement Web PHP: un langage clé pour le développement Web Apr 13, 2025 am 12:08 AM

PHP est un langage de script largement utilisé du côté du serveur, particulièrement adapté au développement Web. 1.Php peut intégrer HTML, traiter les demandes et réponses HTTP et prend en charge une variété de bases de données. 2.PHP est utilisé pour générer du contenu Web dynamique, des données de formulaire de traitement, des bases de données d'accès, etc., avec un support communautaire solide et des ressources open source. 3. PHP est une langue interprétée, et le processus d'exécution comprend l'analyse lexicale, l'analyse grammaticale, la compilation et l'exécution. 4.PHP peut être combiné avec MySQL pour les applications avancées telles que les systèmes d'enregistrement des utilisateurs. 5. Lors du débogage de PHP, vous pouvez utiliser des fonctions telles que error_reportting () et var_dump (). 6. Optimiser le code PHP pour utiliser les mécanismes de mise en cache, optimiser les requêtes de base de données et utiliser des fonctions intégrées. 7

Créer l'avenir : programmation Java pour les débutants absolus Créer l'avenir : programmation Java pour les débutants absolus Oct 13, 2024 pm 01:32 PM

Java est un langage de programmation populaire qui peut être appris aussi bien par les développeurs débutants que par les développeurs expérimentés. Ce didacticiel commence par les concepts de base et progresse vers des sujets avancés. Après avoir installé le kit de développement Java, vous pouvez vous entraîner à la programmation en créant un simple programme « Hello, World ! ». Une fois que vous avez compris le code, utilisez l'invite de commande pour compiler et exécuter le programme, et « Hello, World ! » s'affichera sur la console. L'apprentissage de Java commence votre parcours de programmation et, à mesure que votre maîtrise s'approfondit, vous pouvez créer des applications plus complexes.

See all articles