三、泛型

一、什么是泛型?

Java泛型设计原则:只要在 编译时期 没有出现警告,那么运行时期就不会出现ClassCastException异常.
泛型:把类型明确的工作推迟到创建对象或调用方法的时候才去明确的特殊的类型。
本质:参数化类型;
把类型当作是参数一样传递<数据类型> 只能是引用类型

通过反射,可以跳过编译时期,看到类型限制仅在于编译阶段。

 List<String> list = new ArrayList<>();
       list.add("1");
       list.add("a");
       list.add((new Date()).toString());

        try {
            Method method = list.getClass().getDeclaredMethod("add",Object.class);
            method.invoke(list,new Object());
            System.out.println(list);
        } catch (Exception e) {
            e.printStackTrace();
        }

二、泛型通配符

1.无边界通配符

没有限制调用的类型

public static void loop(List<?> list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+";");
        }
    }

2.上边界通配符

仅 同级或往下的类类型能被调用
? super Number : Number 、Integer…

public static void loop(List<? extends Number > list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+";");
        }
    }

3.下边界通配符

仅 同级或往上的类类型能被调用
? super Number : Number 、Object…

public static void loop(List<? super Number> list) {
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+";");
        }
    }

在这里插入图片描述

三、示例

规则:
必须先声明再使用
泛型的声明通过"<>"实现
约定泛型可以使用单个大写字母表示 常用 K E T V 等
在这里插入图片描述

1.泛型类

用于增加代码灵活度??????

public class Generic <T>{
    
    T t;

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }
}

2. 泛型方法

public class Generic<K,V> {
    /**
     * 普通方法  可以使用类中定义的泛型
     * @param k
     * @param v
     * @return
     */
    public K method1(K k,V v){
        return (K)null;
    }

    /**
     * 普通方法 使用方法中定义的泛型
     * @param t
     * @param v
     * @param <T>
     * @return
     */
    public <T>T method(T t,V v){
        return (T)null;
    }

    /**
     * 惊天方法中无法使用类中定义的泛型
     * @param a
     * @param <A>
     * @return
     */
    public static <A>A method3(A a){
        return null;
    }
}

3. 泛型接口

public interface Generic<T> {
    T add(T a,T b);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值