枚舉類

1.枚舉類入門

Java枚舉類是從Java5開始支持的。

枚舉類的構造方法是用private修飾的。枚舉類的所有實例必須在類的第一行列出,否則這個枚舉類不會產生對象。

而且這些實例都是public static void.

每個枚舉類都有一個values方法,該方法可以遍歷枚舉類的所有實例

[java] view plaincopyprint?

  1. public class Test {

  2.  

  3.  

  4. public static void tell(Season s)

  5. {

  6. switch(s)

  7. {

  8. case Spring:

  9. System.out.println(s+"春天");

  10. break;

  11. case Summer:System.out.println(s+"夏天");

  12. break;

  13. case Fall:System.out.println(s+"秋天");

  14. break;

  15. case Winter:System.out.println(s+"冬天");

  16. break;

  17. }

  18.  

  19. }

  20.  

  21. public static void main(String[] args) {

  22.  

  23. for(Season s:Season.values())

  24. {

  25. System.out.println(s);

  26. }

  27. tell(Season.Fall);

  28.  

  29. }

  30.  

  31. }

  32.  

  33. enum Season

  34. {

  35. Spring,Summer,Fall,Winter;

  36. }

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?

  1. public class Test {

  2.  

  3.  

  4.  

  5.  

  6.  

  7. public static void main(String[] args) {

  8.  

  9.  

  10. Season s=Enum.valueOf(Season.class, "Summer");

  11. System.out.println(s);

  12.  

  13. }

  14.  

  15. }

  16.  

  17. enum Season

  18. {

  19. Spring,Summer,Fall,Winter;

  20. }

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?

  1. public class Test {

  2.  

  3.  

  4.  

  5.  

  6.  

  7. public static void main(String[] args) {

  8.  

  9. Season s=Enum.valueOf(Season.class, "Summer");

  10. System.out.println(s.name);

  11.  

  12. }

  13.  

  14. }

  15.  

  16. enum Season

  17. {

  18. Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天");

  19. public String name;

  20. private Season(String name)

  21. {

  22. this.name=name;

  23. }

  24. }

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?

  1. public class Test {

  2.  

  3.  

  4.  

  5.  

  6.  

  7. public static void main(String[] args) {

  8.  

  9. Season s=Enum.valueOf(Season.class, "Summer");

  10. System.out.println(s.name);

  11. s.printInfo();

  12.  

  13. }

  14.  

  15. }

  16.  

  17. enum Season implements Infomation

  18. {

  19. Spring("春天"),Summer("夏天"),Fall("秋天"),Winter("冬天");

  20. public String name;

  21. private Season(String name)

  22. {

  23. this.name=name;

  24. }

  25. @Override

  26. public void printInfo() {

  27. System.out.println(name);

  28.  

  29. }

  30. }

  31. interface Infomation

  32. {

  33. void printInfo();

  34. }

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?

  1. public class Test {

  2.  

  3.  

  4.  

  5.  

  6.  

  7. public static void main(String[] args) {

  8.  

  9. Season s=Enum.valueOf(Season.class, "Summer");

  10. System.out.println(s.name);

  11. s.printInfo();

  12.  

  13. }

  14.  

  15. }

  16.  

  17. enum Season implements Infomation

  18. {

  19. Spring("春天"){

  20.  

  21. @Override

  22. public void printInfo() {

  23. // TODO Auto-generated method stub

  24. System.out.println("春天溫暖");

  25.  

  26. }

  27.  

  28. },Summer("夏天")

  29. {

  30.  

  31. @Override

  32. public void printInfo() {

  33. // TODO Auto-generated method stub

  34. System.out.println("夏天炎熱");

  35. }

  36.  

  37. },Fall("秋天")

  38. {

  39.  

  40. @Override

  41. public void printInfo() {

  42. // TODO Auto-generated method stub

  43. System.out.println("秋天涼爽");

  44. }

  45.  

  46. },Winter("冬天"){

  47.  

  48. @Override

  49. public void printInfo() {

  50. // TODO Auto-generated method stub

  51. System.out.println("冬天寒冷");

  52. }

  53.  

  54. };

  55. public String name;

  56. private Season(String name)

  57. {

  58. this.name=name;

  59. }

  60.  

  61. }

  62. interface Infomation

  63. {

  64. void printInfo();

  65. }

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?

  1. public class Test {

  2.  

  3.  

  4.  

  5.  

  6.  

  7. public static void main(String[] args) {

  8.  

  9. Season s=Enum.valueOf(Season.class, "Summer");

  10. System.out.println(s.name);

  11. s.printInfo();

  12. s.whatToDo();

  13.  

  14. }

  15.  

  16. }

  17.  

  18. enum Season implements Infomation

  19. {

  20. Spring("春天"){

  21.  

  22. @Override

  23. public void printInfo() {

  24. // TODO Auto-generated method stub

  25. System.out.println("春天溫暖");

  26.  

  27. }

  28.  

  29. @Override

  30. public void whatToDo() {

  31. // TODO Auto-generated method stub

  32. System.out.println("我去春遊");

  33.  

  34. }

  35.  

  36. },Summer("夏天")

  37. {

  38.  

  39. @Override

  40. public void printInfo() {

  41. // TODO Auto-generated method stub

  42. System.out.println("夏天炎熱");

  43. }

  44.  

  45. @Override

  46. public void whatToDo() {

  47. // TODO Auto-generated method stub

  48. System.out.println("我去游泳");

  49. }

  50.  

  51. },Fall("秋天")

  52. {

  53.  

  54. @Override

  55. public void printInfo() {

  56. // TODO Auto-generated method stub

  57. System.out.println("秋天涼爽");

  58. }

  59.  

  60. @Override

  61. public void whatToDo() {

  62. // TODO Auto-generated method stub

  63. System.out.println("我去玩乒乓球");

  64. }

  65.  

  66. },Winter("冬天"){

  67.  

  68. @Override

  69. public void printInfo() {

  70. // TODO Auto-generated method stub

  71. System.out.println("冬天寒冷");

  72. }

  73.  

  74. @Override

  75. public void whatToDo() {

  76. // TODO Auto-generated method stub

  77. System.out.println("我去賞雪觀梅");

  78. }

  79.  

  80. };

  81. public String name;

  82. private Season(String name)

  83. {

  84. this.name=name;

  85. }

  86. public abstract void whatToDo();

  87.  

  88. }

  89. interface Infomation

  90. {

  91. void printInfo();

  92. }

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章