泛型和枚举

泛型的本质是参数化类型,所操作的数据类型被指定为一个参数。

例:

package Demo;

import java.util.ArrayList;

public class Demo314_7 {
	public static void main(String args[]){
		ArrayList al=new ArrayList();
		al.add("Hello");
		al.add(new Double(1.2));
		al.add(new Object());
		String s=(String)al.get(1);
	}
   
}
 运行时异常:Exception in thread "main" java.lang.ClassCastException: java.lang.Double cannot be cast to java.lang.String
	at Demo.Demo314_7.main(Demo314_7.java:11)      double类型不能被转换为string类型
    在没有泛型的情况下 引用Object类来实现参数的任意化(Object类是所有类的父类),实现强制类型转换,这种转换是在参数类型可以预知的情况下进行的
         而泛型是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。

定义泛型:LinkedList<E> 有一个类型参数E,表示这个list对象的存储的元素类型

            类型参数用通配符<?>

          Collection<?>表明Collection的元素为未知类型   只能使用Object类型访问未知类型,不能向未知类型集合中添加除Null以外的任何未知类型的对象


泛型方法:是否有泛型方法,与其所在的类是否泛型没有关系。要定义泛型方法,只需要讲泛型参数列表置于返回值前

   通配符<?>   ?表示一个未知类型,类型List<?>被读作List of unknown

  类型参数用通配符<?> Collection<?>表明Collection的元素为未知类型,只能使用Object类型访问未知类型,不能向未知类型集合中添加除null以外任何类型的对象


泛型方法: 是否拥有泛型方法,与其所在的类是否泛型没有关系,要定义泛型方法,只需将泛型参数列表置于返回值前

                     定义泛型方法时,必须在返回值前边加一个<T>,来声明这是一个泛型方法,持有一个泛型T然后才可以用泛型T作为方法的返回值。

        泛型的类型参数只能是类类型 (包括自定义类)

    枚举:枚举其实就是一种类型,跟int char这种差不多,就是定义变量时限制输入的,你只能赋enum里面规定的。定义枚举:定义了一堆常量,必须遵守多种“类型安全枚举模式”的一种

   所有的枚举类型继承自java.lang.Enum  枚举类就是class,而且是一个不可以被继承的final类(全部大写),既然枚举类是class,当然在枚举类型中有构造器,方法和数据域

 构造器只是在构造枚举值的时候被调用,构造器只能私有private,绝对不允许有pulic 构造器  enum不能使用extends 关键字继承其他类,因为enum已经继承了java.lang.enum是单一继承

          










评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值