java 泛型
来源:互联网 发布:学校网络系统集成方案 编辑:程序博客网 时间:2024/06/17 17:07
类型本来有:简单类型和复杂类型,引入泛型后把复杂类型分的更细了;
现在List, List 是 两种不同的类型;且 无继承关系;
泛型的好处如:
开始版本
public void write(Integer i, Integer[] ia);
public void write(Double d, Double[] da);
泛型版本
public void write(T t, T[] ta);
简便了代码
定义泛型
定义在类后面
紧跟类名后面public class TestClassDefine<T, S extends T>{}
定义泛型 T, S, 且S 继承 T定义在方法装饰符后面
紧跟修饰符后面(public)
public <T, S extends T> T testGenericMethodDefine(T t, S s){}
定义泛型 T, S, 且S 继承 T
实例化泛型
实例化定义在类上的泛型
第一声明类变量或者实例化时。例如
List<String> list; list = new ArrayList<String>;
- 第二继承类或者实现接口时。例如
public class MyList<E> extends ArrayList<E> implements List<E> {...}
实例化定义方法上的泛型
当调用范型方法时,编译器自动对类型参数(泛型)进行赋值,当不能成功赋 值时报编译错误
通配符(?)
上面有泛型的定义和赋值;当在赋值的时候,上面一节说赋值的都是为具体类型,当赋值的类型不确定的时候,我们用通配符(?)代替了:
集合例子
List
class Info<T>{ private T var ; // 定义泛型变量 public void setVar(T var){ this.var = var ; } public T getVar(){ return this.var ; } public String toString(){ // 直接打印 return this.var.toString() ; } }; public class GenericsDemo14{ public static void main(String args[]){ Info<String> i = new Info<String>() ; // 使用String为泛型类型 i.setVar("it") ; // 设置内容 fun(i) ; } public static void fun(Info<?> temp){ // 可以接收任意的泛型对象 System.out.println("内容:" + temp) ; } public static void fun(Info<? extends Number> temp){ // 只能接收Number及其Number的子类 System.out.print(temp + "、") ; } };
文章是从 http://my.oschina.net/jiemachina/blog/201507和http://iteye.blog.163.com/blog/static/18630809620131472312201/
0 0
- 【java 2】java泛型
- Java 泛型 Java generic
- Java Tutorials_Generics(java泛型)
- Java基础 Java 泛型
- java 泛型
- java泛型
- Java泛型
- Java泛型
- java泛型
- java泛型
- java泛型
- Java 泛型
- Java泛型
- Java 泛型
- JAVA 泛型
- java 泛型
- java泛型
- Java泛型
- Tint Color的理解和APP简单的主题化
- 【线段树求最靠前】【HDU2795】【Billboard】
- Android开源项目第二篇——工具库篇
- C++中各种string的相互转化
- Linux文件基本操作
- java 泛型
- mybatis sql in 查询
- [ACM] HDU 1796 How many integers can you find (容斥原理)
- cocos2d使用jni调用java代码时报jni.h找不到错误
- 希尔排序
- Java垃圾回收机制
- Xcode_制作并使用静态类库
- selenium实现模块化
- 开源的高性能Java集合:GNU Trove介绍