有限且固定的類,在Java中稱為枚舉類型。
Java語言中有關鍵字enum來定義一個枚舉類型,enum的全稱為enumeration,中文為枚舉類在 Java語言規范中,枚舉類在JDK1.5才引入的,存放在Java.lamg包中。
在JDK1.5 之前,我們定義常量都是: public static fianl.... 。現在好了,有了枚舉,可以把相關的常量分組到一個枚舉類型里,而且枚舉提供了比常量更多的方法。
語法:
修飾符 enum 枚舉類型名稱{
常量1,常量2,,,常量n;
}
其中enum關鍵字在類上面聲明為枚舉類。當程序中需要使用該常量時,可以使用"類名.常量"來表示。
public class ShowSeason {
public enum season {
SPRING,SUMMER,AUTUMN,WINTER ;
}
public void show (season b){
switch(b){
case SPRING:
System.out.println("春天來了,百花齊放");
break;
case SUMMER:
System.out.println("夏天來了,一起游泳");
break;
case AUTUMN:
System.out.println("秋天來了,一起放風箏");
break;
case WINTER:
System.out.println("冬天來了,一起打雪仗");
break;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
ShowSeason s=new ShowSeason();
s.show(season.SPRING);
s.show(season.SUMMER);
s.show(season.AUTUMN);
}
}
操作枚舉類型成員的方法
values() 方法與ordinal()方法
values()的方法可以將枚舉類型的成員變量以數組的形式返回,也可以通過該方法獲取枚舉類型的成員。
ordinal()方法用於獲取某個枚舉對象的位置索引值。
public enum season{
SPRING,SUMMER,AUTUMN,WINTER;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
season [] seasons=season.values();
for(int i=0;i<seasons.length;i++){
season season=seasons[i];
System.out.println("枚舉類型成員變量:"+season+"在枚舉類型中位置索引值:"+season.ordinal());
}
}
枚舉類型中的構造方法:
在枚舉類型中,可以添加構造方法。但是規定這個構造方法必須為private修飾符所修飾。
語法:
修飾符 enum 枚舉類型名稱{
常量1,常量2,,,常量n(參數1......參數n);
private 枚舉類型名稱([參數1......參數n]){
//方法體
}
}
public enum season{
SPRING("我是春天"),SUMMER("我是夏天"),AUTUMN("我是秋天"),WINTER("我是冬天");
private String description;
private season(){
}
private season(String description){
this.description=description;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(season.SPRING.getDescription());
}
泛型:
泛型是程序設計語言的一種特性。允許程序員在強類型程序設計語言中編寫代碼時定義一些可變部分,那些部分在使用前必須作出指明。各種程序設計語言和其編譯器、運行環境對泛型的支持均不一樣。將類型參數化以達到代碼復用提高軟件開發工作效率的一種數據類型。泛型類是引用類型,是堆對象,主要是引入了類型參數這個概念。
import java.util.Scanner;
public class simpled<T>{
private T ob;
public simpled(T ob){
this.ob=ob;
}
public T getOb() {
return ob;
}
public void setOb(T ob) {
this.ob = ob;
}
public static void main(String[] args) {
// TODO Auto-generated method stub
simpled<String> simpled1= new simpled<String>("java面向對象");
String info= simpled1.getOb();
simpled<Boolean> simpled2= new simpled<Boolean>(true);
boolean b = simpled2.getOb();
}
}