Java泛型代码例子
2015-06-16 21:26
405 查看
Java泛型代码例子
一篇代码胜过千言万语[code]package com.apkkids.javalanguage; import java.util.ArrayList; import java.util.List; /** * @author wxb * Java泛型例子 */ public class GenericTest { //泛型接口 public interface MyCollection<T>{ public T get(int position ); public T add(T t); } //泛型接口继承 public interface MyList<T> extends MyCollection<T>{} //泛型类 public static class MyListImpl<T> implements MyList<T>{ public T get(int position) { System.out.println("get value at position "+ position); return null; } public T add(T t) { System.out.println("add "+t.toString()); return null; } } //要用到的一组类 public static class Fruit{} public static class Apple extends Fruit{} public static class Strawberry extends Fruit{} public static class FujiApple extends Apple{} /** * @param args */ public static void main(String[] args) { //实例化泛型类 MyList<String> strlist = new MyListImpl<String>(); strlist.add("test"); strlist.get(0); //下面的代码说明:List<Apple>不是List<Fruit>的子类,用更通俗的话,泛型类型跟其是否子类型没有任何关系。 // List<Apple> apples = new ArrayList<Apple>(); // List<Fruit> fruits = apples; // 使用 ? extends 通配符,List<Apple>和List<Strawberry>的对象都可以赋值给List<? extends Fruit> List<Apple> apples = new ArrayList<Apple>(); List<Strawberry> strawberrys = new ArrayList<Strawberry>(); List<? extends Fruit> fruits = apples; fruits = strawberrys; //使用 ? super 通配符,List<Fruit>的对象可以赋值给List<? super Apple> List<Fruit> fruits2 = new ArrayList<Fruit>(); List<? super Apple> apples2 = fruits2; // 总结 ? extends 和 the ? super 通配符的特征,我们可以得出以下结论: // 1.如果你想从一个数据类型里获取数据,使用 ? extends 通配符 fruits.get(0); //下面三行都会编译报错 // fruits.add(new Apple()); // fruits.add(new Strawberry()); // fruits.add(new Fruit()); // 2.如果你想把对象写入一个数据结构里,使用 ? super 通配符 apples2.add(new Apple()); apples2.add(new FujiApple()); Object o = apples2.get(0); //取出时只能得到Obejct对象 // 3.如果你既想存,又想取,那就别用通配符。 } }
相关文章推荐
- java中的正则表达式
- java俄罗斯方块
- java中的数字格式化
- 使用Spring Boot快速构建应用
- [尚硅谷] 尚硅谷技术文档——Struts2 面试题分析
- 安装与配置JDK
- javascrpt监听窗口关闭
- java.net.SocketException: Unrecognized Windows Sockets error: 0: JVM_Bind
- java.lang.NoSuchMethodException: com.sun.proxy.$Proxy24.newSysUser()解决方案
- Java 抽象类与接口
- Java实现网页截屏
- Java实现辩论赛计时
- Java编程中 常见的异常
- Java基础之I/O详解(二)类库设计模式
- 使用 Spring Boot 快速构建应用服务
- java中的自动装箱和自动拆箱
- struts2 counter循环标签的使用
- Spring Jdbc
- [算法]java实现 二分查找 斐波那契数列 静静思考
- SpringMVC表单标签简介