1、java中使用枚舉器遍歷的一個小問題。
第一個問題:
可以簡單點理解為it.hasnext())是判斷it迭代器是否還有下一個元素,只是一個判斷,而沒有將它指向it的下一個元素,當it.next()時才真正的指向下一個元素,也可以把it理解為一個數組讓你更容易接受吧..
第二個問題:
//介面 對像變數 = new一個介面的實現類
List a=new LinkedList ();
java.util
介面 List<E>
所有超級介面:
Collection<E>, Iterable<E>
所有已知實現類:
AbstractList, AbstractSequentialList, ArrayList, AttributeList, CopyOnWriteArrayList, LinkedList, RoleList, RoleUnresolvedList, Stack, Vector 由JDK可看到:
介面inputStream有很多子介面和實現類
上面的代碼體現了編程面向介面的思想,這種思想能降低代碼的耦合性,
List a= null;
a = new LinkedList ();
a =new ArrayList;
上面代碼可以看出,你定義一個List變數a,就可以用這個變數記錄它產生的實現類
2、如何用java枚舉映射一個java類
枚舉類型是Java中的一個對象類型,java雖然提供了這個機能,但是好多人覺得使用起來不方便,通常都不怎麼使用這一種類型。。。
3、java枚舉的幾種用法
用法一:常量
在JDK1.5 之前,我們定義常量都是: public static fianl.... 。現在好了,
有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。
Java代碼
public enum Color {
RED, GREEN, BLANK, YELLOW
}
用法二:switch
JDK1.6之前的switch語句只支持int,char,enum類型,使用枚舉,能讓我們的代碼可讀性更強。
Java代碼
enum Signal {
GREEN, YELLOW, RED
}
public class TrafficLight {
Signal color = Signal.RED;
public void change() {
switch (color) {
case RED:
color = Signal.GREEN;
break;
case YELLOW:
color = Signal.RED;
break;
case GREEN:
color = Signal.YELLOW;
break;
}
}
}
用法三:向枚舉中添加新方法
如果打算自定義自己的方法,那麼必須在enum實例序列的最後添加一個分號。而且 Java 要求必須先定義 enum 實例。
Java代碼
public enum Color {
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
// 成員變數
private String name;
private int index;
// 構造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
// 普通方法
public static String getName(int index) {
for (Color c : Color.values()) {
if (c.getIndex() == index) {
return c.name;
}
}
return null;
}
// get set 方法
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
}
用法四:覆蓋枚舉的方法
下面給出一個toString()方法覆蓋的例子。
Java代碼
public enum Color {
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
// 成員變數
private String name;
private int index;
// 構造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//覆蓋方法
@Override
public String toString() {
return this.index+"_"+this.name;
}
}
用法五:實現介面
所有的枚舉都繼承自java.lang.Enum類。由於Java 不支持多繼承,所以枚舉對象不能再繼承其他類。
Java代碼
public interface Behaviour {
void print();
String getInfo();
}
public enum Color implements Behaviour{
RED("紅色", 1), GREEN("綠色", 2), BLANK("白色", 3), YELLO("黃色", 4);
// 成員變數
private String name;
private int index;
// 構造方法
private Color(String name, int index) {
this.name = name;
this.index = index;
}
//介面方法
@Override
public String getInfo() {
return this.name;
}
//介面方法
@Override
public void print() {
System.out.println(this.index+":"+this.name);
}
}
用法六:使用介面組織枚舉
Java代碼
public interface Food {
enum Coffee implements Food{
BLACK_COFFEE,DECAF_COFFEE,LATTE,CAPPUCCINO
}
enum Dessert implements Food{
FRUIT, CAKE, GELATO
}
}
private static void testImplementsInterface() {
for (Food.DessertEnum dessertEnum : Food.DessertEnum.values()) {
System.out.print(dessertEnum + " ");
}
System.out.println();
//我這地方這么寫,是因為我在自己測試的時候,把這個coffee單獨到一個文件去實現那個food介面,而不是在那個介面的內部。
for (CoffeeEnum coffee : CoffeeEnum.values()) {
System.out.print(coffee + " ");
}
System.out.println();
//搞個實現介面,來組織枚舉,簡單講,就是分類吧。如果大量使用枚舉的話,這么干,在寫代碼的時候,就很方便調用啦。
//還有就是個「多態」的功能吧,
Food food = Food.DessertEnum.CAKE;
System.out.println(food);
food = CoffeeEnum.BLACK_COFFEE;
System.out.println(food);
}
4、怎麼使用java中的枚舉方法
怎麼解釋抄枚舉呢。枚舉襲的定義就是一個有限值的集合。一個枚舉類型的變數它的值只可能是類型值中的一個。
所以 Drection 是類型名,Drection drection 則是此類型的變數,變數的值應該是類型里邊所列的值中的一個,如果單寫個 WEST跟本不知道它是什麼,所以要加類名限定 即 Drection.WEST. 於是,對一個枚舉變數賦值的樣子就像這樣。
if(drection==Drection.WEST) return true; String west="WEST"; drection.toString().equals(west) return true;
5、用java編一個程序,實現兩個人玩「石頭、剪刀、布」,要求用枚舉類型定義石頭、剪刀、布
public class Test {應該不是最優解決辦法,先這么著把
6、記得前段時間在看java的枚舉的時候,有一種要每個枚舉值都實現的方法 那是怎麼個情況?
你說的是構造函數吧?給你舉個例子看看:
/**7、java 裡面的枚舉類型有什麼工具類沒
枚舉類寫在某一個類內部就是內部類了。
內部類概述:
把類定義在其他類的內部,這個類就專被稱為屬內部類。
舉例:在類A中定義了一個類B,類B就是內部類。
內部的訪問特點:
A:內部類可以直接訪問外部類的成員,包括私有。
B:外部類要訪問內部類的成員,必須創建對象。
8、用java寫一個枚舉類程序
package com.school.stereotype;
/**
* 活動枚舉類型
* @author QiXuan.Chen
*/
public enum EventStatus {
/**
* 未發布。
*/
DRAFT("DRAFT", "未發布"),
/**
* 已發布。
*/
PUBLISHED("PUBLISHED", "已發布");
/**
* 活動狀態的值。
*/
private String value;
/**
* 活動狀態的中文描述。
*/
private String text;
/**
* @param status 活動狀態的值
* @param desc 活動狀態的中文描述
*/
private EventStatus(String status, String desc) {
value = status;
text = desc;
}
/**
* @return 當前枚舉對象的值。
*/
public String getValue() {
return value;
}
/**
* @return 當前狀態的中文描述。
*/
public String getText() {
return text;
}
/**
* 根據活動狀態的值獲取枚舉對象。
*
* @param status 活動狀態的值
* @return 枚舉對象
*/
public static EventStatus getInstance(String status) {
EventStatus[] allStatus = EventStatus.values();
for (EventStatus ws : allStatus) {
if (ws.getValue().equalsIgnoreCase(status)) {
return ws;
}
}
throw new IllegalArgumentException("status值非法,沒有符合課程狀態的枚舉對象");
}
}
9、怎樣在Java中使用嵌套枚舉類型
J