java笔记(四):泛型
来源:互联网 发布:软件游戏猎手下载 编辑:程序博客网 时间:2024/06/01 14:53
一句话,泛型的本质是 参数化类型
基本用法
一个简单的例子如下:
public class Test{ public static void main(String[] args){ Type integer = new Type<Integer>(3); Type str = new Type<String>("hello"); Integer i = (Integer)integer.print(); String s = (String)str.print(); System.out.println(integer.getClass() == str.getClass()); //true }}class Type<T> { T data; public Type(T data){ this.data = data; } public T print(){ System.out.println(data); return data; }}
在类Type中,属性data不事先指定类型,而是使用泛型<T>
代替,这样就可以为同一个类声明多种类型的属性。 integer.getClass() == str.getClass()
的结果为true,可知编译后,并不会因为多种类型就分别生成多个Type类。
泛型方法
除了用于类,还可以用于方法。泛型方法的类型参数放在返回类型前面。
public static void main(String[] args){ Integer[] in = {1,2}; String[] str = {"love","live"}; print(in); print(str);}public static <T> void print(T[] data){ System.out.println(data[0]+" "+data[1]);}
通配符
<?>
代替具体的类型参数
public class Test{ public static void main(String[] args){ Type integer = new Type<Integer>(3); Type str = new Type<String>("hello"); print(integer); print(str); } public static void print(Type<?> type){ System.out.println(type.data); }}class Type<T> { T data; public Type(T data){ this.data = data; }}
实际上,上述代码中的Type<?>
可以简化为Type
。
通配符的上下界
通配符的主要意义在于设定其上限和下限。
public class Test{ public static void main(String[] args){ Type<Integer> integer = new Type<Integer>(3); Type<String> str = new Type<String>("hello"); print(integer); //print(str); 这里会报错 } public static void print(Type<? extends Number> type){ System.out.println(type.data); }}class Type<T> { T data; public Type(T data){ this.data = data; }}
Type<? super Number>
与Type<? extends Number>
相反,表示只能是Number的父类.
阅读全文
0 0
- java笔记(四):泛型
- JAVA笔记(四)
- java笔记(四)
- JAVA笔记(四)
- JAVA 笔记(四)
- java笔记(四)
- java 笔记(四)
- Java学习笔记(四)
- Java学习笔记(四)
- java学习笔记(四)
- java学习笔记(四)
- Java学习笔记(四)
- Java学习笔记(四)
- java学习笔记(四)
- Java学习笔记(四)
- Java学习笔记(四)
- Java学习笔记(四)
- JAVA学习笔记(四)
- NAT技术与代理服务器
- 揭秘华尔街人工智能真实水平:距离40%的金融民工被取代或只剩8年
- 板楼
- 【脚本语言系列】关于Python并发技术gevent,你需要知道的事
- lambda表达式
- java笔记(四):泛型
- 茶
- Android studio 使用NDK 实现串口 动态库
- React.js 官网资料摘记:JSX简介
- Nginx安装手册
- Pat甲级10019
- Java基础教程29-Abstract类和方法
- hadoop的Namenode HA原理详解
- postgresql中ST_Intersects用法