泛型(通配符)

1:声明好泛型类型之后,集合中只能存放特定类型元素

2:泛型类型必须是引用类型

3:使用泛型后取出元素不需要类型转换.

=====================泛型函数===============================

 当函数中使用了一个不明确的数据类型,那么在函数上就可以进行泛型的定义。

         public <泛型的声明> 返回值类型 函数名( 泛型 变量名 ){       

         }

ex:

public <T>T getData(T data) {

       return data;

    }

=====================泛型类===============================

修饰符 class 类名<泛型>{    

public TgetData(T data) {

       return data;

    }

 

    //静态方法不可以使用类中的泛型,因为静态方法先于类加载


    public static <E> E getData2(E data) {
        return data;
    }

     }


=====================泛型接口===============================

interface Inter<T> {

    void print(T t);

}

=====================通配符==================================

泛型针对于声明,而通配符针对实现

伪代码:

void print(collection<?> coll){ ...}

main(){

ArrayList<String> list = ...

print(list);


HashSet<Object> set=...

print(set)


explain:print传入 ArrayList<String>HashSet<Object> 都不会报错,因为collection<?>是通配符,如果collection<Object>那么传入ArrayList<String>就会报错

}


? extends E: 接收E类型或者E的子类型。

? super E: 接收E类型或者E的父类型。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值