java语言中枚举类型_Java语言学习(十一):枚举类型和泛型

Java中一个重要的类型:枚举,它可以用来表示一组取值范围固定的变量,使用 enum 关键字定义枚举类型,其中元素不能重复,通常大写表示。利用Java的反射机制,可以在运行时分析类,如查看枚举类型的修饰符、父类和自定义方法等,下面简单说下。

(一)枚举类型

定义一个简单的枚举类型,如下:

public enum Position{

EAST,SOUTH,WEST,NORTH

}

利用Java反射机制分析类:

//获取Class对象

Class eClass = Position.class;

String modify = Modifier.toString(eClass.getModifiers());

System.out.println("修饰符:"+modify);

System.out.println("父类:"+eClass.getSuperclass());

输出为:

修饰符:public static final

父类:class java.lang.Enum

Enum类是所有枚举类型的父类,它是一个没有抽象方法的抽象类。该类定义了枚举类型的常用方法,如枚举元素间的比较compareTo()和equals()方法、枚举元素定义的名称name()方法等,可以使用“==”比较两个枚举元素。

枚举类型不能继承,可以看做普通类,像定义方法,这里就不做介绍了,基本很少用到。

(二)泛型

泛型是Java中的重要特性,使用泛型编程可以使代码获得最大的重用。在使用泛型时要指明泛型的具体类型,避免类型转换。

定义一个栈结构的泛型类:

/*

* 泛型:定义参数类型为T的泛型类

*/

public class Stack {

//使用T类型的链表保存入栈的元素(简化开发)

private LinkedList conter = new LinkedList();

//向栈中添加元素

public void push(T t){

conter.addFirst(t);

}

//从栈中删除元素

public T pop(){

return conter.removeFirst();

}

//判断链表是否为空

public boolean empty(){

return conter.isEmpty();

}

}

测试类:

public static void main(String[] args) {

//创建栈对象,并指定参数类型

Stack stack = new Stack();

//添加元素

stack.push("Java");

stack.push("Php");

stack.push("Python");

//遍历栈

while(!stack.empty()){

System.out.println((String)stack.pop());

}

}

泛型类就是含有一个或多个类型参数的类,泛型参数的命名一般使用单个的大写字母,如上所示,且有一定的局限性,像泛型类型的参数只能使用类类型,如String、Integer等,而不能使用基本数据类型,如int、float等,不能抛出或捕获泛型类型的实例,不能直接使用泛型数组,不能实例化类型变量等。

Java中的泛型不支持实例化类型变量,如 “T[] arr = new T[10];”,属于非法的语句。对于某些不足之处,可以使用Java反射机制进行弥补,如泛型数组,这里不做介绍了,大家感兴趣的可以自行百度查看。

在Java中,不仅可以声明泛型类,还可以在普通类中声明泛型方法。声明泛型方法需要注意:

使用格式来表示泛型类型参数,参数的个数可以多个;

类型参数列表要放在访问权限修饰符、static和final之后;

类型参数列表要放在返回值类型、方法名称、方法参数之前;

简单的声明如下所示:

public static List query(String sql){}

利用泛型类型参数可以将类、方法或接口的类型限制为T类型,但不够灵活。Java中可以使用通配符增强泛型,使用“?”作为通配符,可以利用extends关键字来设置取值的上限,如:“ extends Number>”表示Byte、Double、Float、Integer等都适合这个类型参数。另外还可以设置取值下限,这里不做介绍了。

泛型在Java中的一个应用:查找。在数据结构中,查找有很多类型,如顺序查找、折半查找、散列查找等,这里有泛型化的折半查找法,大家感兴趣的可自行学习。

好了,上面就是一些关于Java中枚举类型和泛型的知识总结,希望大家喜欢。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值