泛型

Java泛型详解

泛型:

       jdk 1.5出现的安全机制

 

好处:

       1,将运行时期的问题ClassCastException转到了编译时期

        2,避免了强制转换的麻烦

 

<>:什么时候用?当操作的引用数据类型不确定的时候。就使用<>。将要操作的引用数据类型传入即可。

 其实<>就是用于接收具体引用数据类型的参数范围。

在程序中,只要用到了带有<>的类或者接口,就要明确传入的具体引用数据类型。

泛型这个技术是给编译器用的,用于编译时期。确保了类型的安全。

运行时,会将泛型去掉,生成的class文件是不带泛型的。这个称为泛型的擦除。

为什么擦除呢?因为为了兼容运行的类加载器。

泛型补偿:在运行时,通过获取元素的类型进行转换动作。不用使用者在强制转换了。

 

//泛型作用于类中的时候这个类就叫泛型类:


public class Tool<QQ> {
    //普通方法可以直接使用类上面的泛型的参数
    public void show (QQ qq){
        System.out.println(qq);
    }
    
    /*
     * 泛型定义在方法上的时候,调用方法的时候可以确定传入的是什么类型就操作的是什么类型。跟泛型定义在类上面的差不多一个意思。
     * 定义方法泛型,泛型必须写在返回值的前面 修饰符的后面。
     */
    public <w> void show2(w str){
        System.out.println(str);
    }
    
    /*
     * 当方法为静态时,方法中的参数不能使用类上的泛型,因为静态的方法不需要对象(泛型在创建对象的时候就要确定了)。
     * 如果要使用泛型只能把泛型定义在方法上。
     */
    //错误写法
    public static void print(QQ q){
        System.out.println(q);
    }
    
    //正确写法
    public static <Y> void method(Y y){
        System.out.println(y);
    }
}
 

泛型定义在接口上的时候就叫泛型接口。

interface Iter<T>{

     void   show(T t);

}

实现泛型接口。

class Iterimperment  implements  Iter<String>{

           public void show(String str){

System.out.println(str);

}

}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值