java泛型
来源:互联网 发布:台湾文献数据库 编辑:程序博客网 时间:2024/05/19 17:23
- 支持泛型类以及泛型方法
class MyGen<T,E>{ //<X>类型声明在返回值前,若未在类中声明,则必须在方法里声明 public static <X> X myCast(Object o){ return (X)o; }}//类型推导,由前面的引用进行String s = MyGen.myCast("lalala");//显式调用String s = MyGen.<String>myCast("lalal");
- 泛型使用类型擦除,对于子类继承使用桥方法
public class T{ public static void main(String[] args){ F<String> f = new S(); System.out.println(f.getE("xxx")); }}class F<E>{ //该方法将被擦除成public Object getE(Object e){...} public E getE(E e){ return null; }}class S extends F<String>{ //实际的方法重写代码,系统将为S生成一个public Object getE(Object e){...}的桥方法,并将实际调用代理到以下的方法 public String getE(String s){ return "love"; }}
//以下为桥接代码
- 通配符,一般只用于方法参数中,进行更大范围的参数传入
? extends E,表示E的所有子类中的某一个具体子类.? super E,表示E的所有父类中的某一个具体父类.? 等价于(? extends Object) 表示所有类中的某一个具体类.(只用于<?>替代<Object>使用Object方法以及Class<?>与具体类型无关方法)import java.util.ArrayList;import java.util.List;/** * @author doggy * Created on 16-5-27. */public class Test { public static void main(String[] args) { List<? extends String> l = new ArrayList<String>(); addFrom(l); List<Object> ll = new ArrayList<Object>(); addTo(new ArrayList<Object>()); } //不能从super泛型中获得数据(因为不确定是哪个父类),只能使用Object进行for循环。 public static void addTo(List<? super String> es){ es.add("sdfsf"); } //不能往extends泛型中添加数据,因为某个具体子类中加入其他子类可能错误。 public static void addFrom(List<? extends String> es){ for(String x:es){ System.out.println(es); } }}
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泛型
- sizeof(struct )大小讨论
- HDU 1394 Minimum Inversion Number (离散化 + 树状数组 求逆序对)
- JPA持久化上下文与对象状态
- web服务器集群(多台web服务器)session同步、共享的3种解决方法
- shell简单编程
- java泛型
- Subsets
- JavaScript 高级课程之缓冲+多个DIV运动框架实现 + 透明度
- JDK1.8新特性
- 求1!+2!+3!+......+n!
- 农村土地确权之调查公示 —— 地块分布图制作说明
- Clojure小教程(更新中)
- 捕捉HTTP数据,解析Request header
- 32位 64位 各类型字节数