1.枚舉類入門
Java枚舉類是從Java5開始支持的。
枚舉類的構造方法是用private修飾的。枚舉類的所有實例必須在類的第一行列出,否則這個枚舉類不會產生對象。
而且這些實例都是public static void.
每個枚舉類都有一個values方法,該方法可以遍歷枚舉類的所有實例
[java] view plaincopyprint?
public class Test {
public static void tell(Season s)
{
switch(s)
{
case Spring:
System.out.println(s+"春天");
break;
case Summer:System.out.println(s+"夏天");
break;
case Fall:System.out.println(s+"秋天");
break;
case Winter:System.out.println(s+"冬天");
break;
}
}
public static void main(String[] args) {
for(Season s:Season.values())
{
System.out.println(s);
}
tell(Season.Fall);
}
}
enum Season
{
Spring,Summer,Fall,Winter;
}
public class Test { public static void tell(Season s) { switch(s) { case Spring: System.out.println(s+"春天"); break; case Summer:System.out.println(s+"夏天"); break; case Fall:System.out.println(s+"秋天"); break; case Winter:System.out.println(s+"冬天"); break; } } public static void main(String[] args) { for(Season s:Season.values()) { System.out.println(s); } tell(Season.Fall); } } enum Season { Spring,Summer,Fall,Winter; }
2.枚舉類的構造方法和對象
枚舉類的構造方法是private,所以不能使用new創建對象
可以使用Enum.valueOf(Class c,String s);創建對象
[java] view plaincopyprint?
public class Test {
public static void main(String[] args) {
Season s=Enum.valueOf(Season.class, "Summer");
System.out.println(s);
}
}
enum Season
{
Spring,Summer,Fall,Winter;
}
public class Test { public static void main(String[] args) { Season s=Enum.valueOf(Season.class, "Summer"); System.out.println(s); } } enum Season { Spring,Summer,Fall,Winter; }
一旦爲枚舉類定義了帶參數的構造方法後,列舉枚舉類就必須對應的傳入參數
[java] view plaincopyprint?
public class Test {
public static void main(String[] args) {
Season s=Enum.valueOf(Season.class, "Summer");
System.out.println(s.name);
}
}
enum Season
{
Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天");
public String name;
private Season(String name)
{
this.name=name;
}
}
public class Test { public static void main(String[] args) { Season s=Enum.valueOf(Season.class, "Summer"); System.out.println(s.name); } } enum Season { Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天"); public String name; private Season(String name) { this.name=name; } }
3.枚舉類實現接口
與普通類一樣,枚舉類實現接口,則必須實現接口中所有的方法
[java] view plaincopyprint?
public class Test {
public static void main(String[] args) {
Season s=Enum.valueOf(Season.class, "Summer");
System.out.println(s.name);
s.printInfo();
}
}
enum Season implements Infomation
{
Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天");
public String name;
private Season(String name)
{
this.name=name;
}
@Override
public void printInfo() {
System.out.println(name);
}
}
interface Infomation
{
void printInfo();
}
public class Test { public static void main(String[] args) { Season s=Enum.valueOf(Season.class, "Summer"); System.out.println(s.name); s.printInfo(); } } enum Season implements Infomation { Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天"); public String name; private Season(String name) { this.name=name; } @Override public void printInfo() { System.out.println(name); } } interface Infomation { void printInfo(); }
也可以使用匿名內部類的方法爲每一個枚舉類對象實現接口
[java] view plaincopyprint?
public class Test {
public static void main(String[] args) {
Season s=Enum.valueOf(Season.class, "Summer");
System.out.println(s.name);
s.printInfo();
}
}
enum Season implements Infomation
{
Spring("春天"){
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("春天溫暖");
}
},Summer("夏天")
{
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("夏天炎熱");
}
},Fall("秋天")
{
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("秋天涼爽");
}
},Winter("冬天"){
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("冬天寒冷");
}
};
public String name;
private Season(String name)
{
this.name=name;
}
}
interface Infomation
{
void printInfo();
}
public class Test { public static void main(String[] args) { Season s=Enum.valueOf(Season.class, "Summer"); System.out.println(s.name); s.printInfo(); } } enum Season implements Infomation { Spring("春天"){ @Override public void printInfo() { // TODO Auto-generated method stub System.out.println("春天溫暖"); } },Summer("夏天") { @Override public void printInfo() { // TODO Auto-generated method stub System.out.println("夏天炎熱"); } },Fall("秋天") { @Override public void printInfo() { // TODO Auto-generated method stub System.out.println("秋天涼爽"); } },Winter("冬天"){ @Override public void printInfo() { // TODO Auto-generated method stub System.out.println("冬天寒冷"); } }; public String name; private Season(String name) { this.name=name; } } interface Infomation { void printInfo(); }
4.包含抽象方法的枚舉類
包含抽象方法枚舉類,要實例化對象的話,就得讓每個對象實現抽象方法
[java] view plaincopyprint?
public class Test {
public static void main(String[] args) {
Season s=Enum.valueOf(Season.class, "Summer");
System.out.println(s.name);
s.printInfo();
s.whatToDo();
}
}
enum Season implements Infomation
{
Spring("春天"){
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("春天溫暖");
}
@Override
public void whatToDo() {
// TODO Auto-generated method stub
System.out.println("我去春遊");
}
},Summer("夏天")
{
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("夏天炎熱");
}
@Override
public void whatToDo() {
// TODO Auto-generated method stub
System.out.println("我去游泳");
}
},Fall("秋天")
{
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("秋天涼爽");
}
@Override
public void whatToDo() {
// TODO Auto-generated method stub
System.out.println("我去玩乒乓球");
}
},Winter("冬天"){
@Override
public void printInfo() {
// TODO Auto-generated method stub
System.out.println("冬天寒冷");
}
@Override
public void whatToDo() {
// TODO Auto-generated method stub
System.out.println("我去賞雪觀梅");
}
};
public String name;
private Season(String name)
{
this.name=name;
}
public abstract void whatToDo();
}
interface Infomation
{
void printInfo();
}