泛型

Java泛型详解
本文深入讲解Java泛型的概念,包括其基本定义、使用格式、带来的好处等,并通过具体实例演示如何应用泛型来提高代码质量和灵活性。此外还介绍了泛型方法、泛型接口等高级特性。

泛型

(1)概述

​ 是一种把类型明确的工作推迟到创建对象
或者调用方法的时候才去明确的特殊的类型。
​ 参数化类型,把类型当作参数一样的传递。

(2)格式

<数据类型> 这里的数据类型只能是引用数据类型

JDK1.7之前 泛型前面后面都得写上,JDK1.7可以省略右半边不写

(3)好处

​ 1.把运行时期的问题提前到了编译期间

  1. 避免了强制类型转换
    3.优化了程序设计,解决了黄色警告线
    注意:泛型只在编译期有效 但在运行期就擦除了

    4.泛型可以限定,我这个集合中存储什么样的引用数据类型

(4)举例

public class Demo1 {
    public static void main(String[] args) {
        ArrayList list2 = new ArrayList();
        list2.add("aaaaa");
        list2.add("bbbb");
        list2.add("ccc");
        list2.add("ddd");
        Object obj = list2.get(0);
        String string= (String) obj;
        int i=string.length();
        System.out.println(i);

        //泛型可以避免向下转型
        ArrayList<String> list3= new ArrayList();
        list3.add("aaaaa");
        list3.add("bbbb");
        list3.add("ccc");
        list3.add("ddd");
        String s = list3.get(0);
        System.out.println(s);
    }
}

结果:

aaaaa

aaaaa

(5)泛型方法

泛型方法概述: 把泛型定义在方法上

定义格式: public <泛型类型> 返回类型 方法名(泛型类型 变量名)

public class MyTest2 {
    public static void main(String[] args) {
        MyClass<String> stringMyClass = new MyClass<>();
        stringMyClass.setT("abc");
        String t = stringMyClass.getT();

        MyClass<Integer> integerMyClass = new MyClass<>();
        integerMyClass.setT(100);
        Integer t1 = integerMyClass.getT();
    }
    
     class MyClass<T> { //泛型<T>  我把泛型加在类上
    T t;
    public T getT() {
        return t;
    }
    public void setT(T t) {
        this.t = t;
    }
}

}

(6)泛型接口

泛型接口概述: 把泛型定义在接口上

定义格式: public interface 接口名<泛型类型>

public class MyTest3 {
    public static void main(String[] args) {
        //接口上的泛型,在你创建该接口的子类对象时,必须要明确这个泛型,具体是什么数据类型
        MyDemo2<Integer, String, String> integerStringStringMyDemo2 = new MyDemo2<>();
        Collection<Integer> collection=new ArrayList<Integer>();

            //匿名内部类 在创建接口的子类对象时,就必须明确接口上的泛型,到底是什么类型
        new MyInterface<String,String,String>(){
            @Override
            public String show(String s, String s2) {
                return null;
            }
        };
        
    }
    interface MyInterface<T,U,R> { //泛型接口
    public R show(T t,U u);
}

class MyDemo2<T, U, R> implements MyInterface<T, U, R>{
    @Override
    public R show(T t, U u) {
        return null;
    }
}


}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值