Heim  >  Artikel  >  Java  >  Grundlegendes Java-Lernen: Verwendung des Enum-Typs

Grundlegendes Java-Lernen: Verwendung des Enum-Typs

青灯夜游
青灯夜游nach vorne
2018-10-19 16:48:142212Durchsuche

Dieser Artikel bietet Ihnen eine Einführung in die Verwendung des Enum-Typs in Java. Es hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen. Ich hoffe, es wird Ihnen hilfreich sein.

1. Einführung in den Aufzählungstyp

Aufzählungstyp ) erschien sehr früh in Programmiersprachen. Es wird verwendet, um eine Gruppe ähnlicher Werte in einen Typ einzuschließen 🎜>. Der Name dieses Aufzählungstyps wird als eindeutiger Typdeskriptor definiert, der der Definition einer Konstante ähnelt. Im Vergleich zu Konstantentypen können -Aufzählungstypen jedoch einen größeren Wertebereich für Variablen bereitstellen, die durch deklariert werden.

Wenn Sie beispielsweise sieben Farben für den Regenbogen zeichnen möchten, können Sie dies durch konstante Definition in einem Java-Programm tun. Bei Verwendung von

Public static class RainbowColor { 
    
   // 红橙黄绿青蓝紫七种颜色的常量定义
   public static final int RED = 0; 
   public static final int ORANGE = 1; 
   public static final int YELLOW = 2; 
   public static final int GREEN = 3; 
   public static final int CYAN = 4; 
   public static final int BLUE = 5; 
   public static final int PURPLE = 6; 
}

können Sie direkt auf diese Konstanten im Programm verweisen. Allerdings gibt es bei diesem Ansatz noch einige Probleme.

Typ unsicher

Da der entsprechende Wert der Farbkonstante eine Ganzzahl ist, Daher ist es durchaus möglich, dass während der Programmausführung ein beliebiger ganzzahliger Wert an die Farbvariable übergeben wird, was zu einem Fehler führt.

hat keinen Namespace

Da Farbkonstanten nur Attribute der Klasse sind, wenn Auf die von Ihnen verwendeten Dateien muss über Klassen zugegriffen werden.

Schlechte Konsistenz

Da Integer-Aufzählungen Konstanten zur Kompilierungszeit sind, ist der Kompilierungsprozess Nach Abschluss werden in alle client- und serverseitigen Referenzen direkt ganzzahlige Werte geschrieben. Wenn Sie auf diese Weise den alten Ganzzahlwert der Aufzählung ändern oder einen neuen Aufzählungswert hinzufügen, muss der gesamte referenzierte Code neu kompiliert werden, da sonst zur Laufzeit Fehler auftreten.

Der Typ hat keine Bedeutung

Da die Farbaufzählungswerte einfach sind Einige ganzzahlige Werte mit beliebiger Bedeutung. Wenn Sie zur Laufzeit debuggen, werden Sie feststellen, dass das Protokoll viele magische Zahlen enthält, aber außer den Programmierern selbst ist es für andere schwierig, ihre Bedeutung zu verstehen .

2. So definieren Sie den Enum-Typ

Um die diesbezüglichen Mängel der Java-Sprache zu verbessern, wurden mit der Veröffentlichung der Version 5.0 des SDK Aufzählungstypen zur Sprachebene hinzugefügt. Die Definition eines Aufzählungstyps ist ebenfalls sehr einfach. Verwenden Sie einfach das Schlüsselwort „enum“ sowie den Namen und den Textkörper der Aufzählung in geschweiften Klammern. Die oben erwähnte Regenbogenfarbe kann beispielsweise mit der neuen Aufzählungsmethode neu definiert werden:

Aus der obigen Definitionsform geht hervor, dass der Aufzählungstyp in Java sehr einfach ist, aber tatsächlich sind es die Funktionen, die dem Aufzählungstyp durch die Java-Sprachspezifikation gegeben werden sehr Es ist so leistungsstark, dass es nicht nur ganzzahlige Werte einfach in Objekte umwandelt, sondern auch die Definition des Aufzählungstyps in eine voll funktionsfähige Klassendefinition umwandelt. Mit dieser Typdefinitionserweiterung können Entwickler dem Aufzählungstyp beliebige Methoden und Eigenschaften hinzufügen und eine beliebige Schnittstelle implementieren. Darüber hinaus bietet die Java-Plattform auch hochwertige Implementierungen für den Enum-Typ . Beispielsweise implementiert der Standardwert das Comparable und Serialisierbare Schnittstellen, die es Entwicklern ermöglichen, sich um diese Details normalerweise keine Gedanken zu machen.

回到本文的主题上来,引入枚举类型到底能够给我们开发带来什么样好处呢?一个最直接的益处就是扩大 switch 语句使用范围。5.0 之前,Java 中 switch 的值只能够是简单类型,比如 int、byte、short、char, 有了枚举类型之后,就可以使用对象了。这样一来,程序的控制选择就变得更加的方便,看下面的例子:

定义 Enum 类型

// 定义一周七天的枚举类型         
public enum WeekDayEnum { Mon, Tue, Wed, Thu, Fri, Sat, Sun } 
 
// 读取当天的信息
WeekDayEnum today = readToday(); 
 
// 根据日期来选择进行活动
switch(today) { 
 Mon: do something; break; 
 Tue: do something; break; 
 Wed: do something; break; 
 Thu: do something; break; 
 Fri: do something; break; 
 Sat: play sports game; break; 
 Sun: have a rest; break; 
}

对于这些枚举的日期,JVM 都会在运行期构造成出一个简单的对象实例一一对应。这些对象都有唯一的 identity,类似整形数值一样,switch 语句就根据此来进行执行跳转。

如何定制 Enum 类型

除了以上这种最常见的枚举定义形式外,如果需要给枚举类型增加一些复杂功能,也可以通过类似 class 的定义来给枚举进行定制。比如要给 enum 类型增加属性,可以像下面这样定义:

// 定义 RSS(Really Simple Syndication) 种子的枚举类型
public enum NewsRSSFeedEnum { 
   // 雅虎头条新闻 RSS 种子
   YAHOO_TOP_STORIES("<a href="http://rss.news.yahoo.com/rss/topstories"><code>http://rss.news.yahoo.com/rss/topstories</code></a>"), 
    
   //CBS 头条新闻 RSS 种子
   CBS_TOP_STORIES("<a href="http://feeds.cbsnews.com/CBSNewsMain?format=xml"><code>http://feeds.cbsnews.com/CBSNewsMain?format=xml</code></a>"), 
    
   // 洛杉矶时报头条新闻 RSS 种子
   LATIMES_TOP_STORIES("<a href="http://feeds.latimes.com/latimes/news?format=xml"><code>http://feeds.latimes.com/latimes/news?format=xml</code></a>"); 
        
   // 枚举对象的 RSS 地址的属性
   private String rss_url; 
        
   // 枚举对象构造函数
   private NewsRSSFeedEnum(String rss) { 
       this.rss_url = rss; 
   } 
        
   // 枚举对象获取 RSS 地址的方法
   public String getRssURL() { 
       return this.rss_url; 
   } 
}

上面头条新闻的枚举类型增加了一个 RSS 地址的属性 , 记录头条新闻的访问地址。同时,需要外部传入 RSS 访问地址的值,因而需要定义一个构造函数来初始化此属性。另外,还需要向外提供方法来读取 RSS 地址。

Das obige ist der detaillierte Inhalt vonGrundlegendes Java-Lernen: Verwendung des Enum-Typs. 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

In Verbindung stehende Artikel

Mehr sehen