枚举类型 和泛型
有限且固定的类,在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();
}
}