java泛型总结
来源:互联网 发布:热点图 软件 编辑:程序博客网 时间:2024/06/15 22:00
泛型的引入是为了解决:
java是强类型的,每个变量都必须有它的类型声明,比如 int a=2; Box b = new Box();
但是
0、当一个变量不确定它的类型的时候就得用泛型了,比如:T a; List<?> a; List<E> a;
1、方法内有个属性 或者 是入参和返回值 的类型不确定的时候,
且方法里面包括参数里面只要写了 <X>泛型,方法的返回值或者void前面就必须加 <X> 这种泛型, 但是如果这个X在 本项目内定义过了class X,方法前可以不加,那这个方法里面用的X类型的变量 就只能接受 X 类new的对象,如果X在项目内没有定义,则表示X是泛型,可以接受任何对象,就得在方法前加<X>,不然编译报错 missing type
public static <Box2, E, T> void main(String[] args) {
T a= func(new ArrayList<>());List<E> data2 = getData(new ArrayList<>());// 把<E>写成<?>也行,方法前就不用加<E>了
List<Box2> data1 = getData(new ArrayList<>()); //方法前可以不加<Box2>
}
static <T> T func(List<? extends String> l){
return null;
}
2、类 里面有不确定的类型 的时候,在类名后面加<T>,指代类里面所有用到的T
class Box<T, E> { //这里不能写成Box<?>private T data;
List<?> list;
List<E> list1; //这个E就是new 这个对象的时候指定的类型了
}
3、或者容器里面的元素类型 List<?> List<E> ; 不确定的时候。
注意:
<T> type 一般用在类上 <E> element一般用在list等容器里面 <K,V>用于map。当然也可以随便乱用 大小写都可以。
<?>泛型通配符 一般用于<? extends x> 表示 所有x的子类;<? super x> 表示 所有x的父类
或者用于 List<?> a;但是不能用于 声明变量 ? a ;
public void getData0(Box<?> data){ //这是个方法 } = public <T> void getData1(Box<T> data){ //这是个方法 } //这2种写法使用起来一样
- Java泛型总结
- Java泛型总结
- JAVA泛型总结
- Java泛型总结
- java 泛型总结
- java泛型总结
- JAVA泛型总结
- JAVA泛型总结
- Java-泛型总结
- java泛型总结
- java 泛型总结
- java泛型总结
- Java泛型总结
- Java泛型总结
- Java泛型总结
- java泛型总结
- Java泛型总结
- Java泛型总结
- Github变更项目语言
- Windows Tensorflow 环境搭建
- Mysql5.6 RPM安装(完结)
- Java注解Annotation
- 使用TCP协议编写一个网络程序,设置服务器端的监听端口是8002,当与客户端建立连接后,服务器端向客户端发送数据“Hello, world”,客户端收到数据后打印输出。
- java泛型总结
- linux nand flash常用命令
- IBM jdk(Windows版) 官方下载方式
- JAVA期末考试
- 一点关于lpasswd的资料
- ES6新特性概览
- CakePHP快速入门
- 使用UDP协议编写一个网络程序,设置接收端程序的监听端口是8001,发送端发送的数据是“Hello, world”。
- php 发奖