java泛型初探
来源:互联网 发布:知乎成功的原因 编辑:程序博客网 时间:2024/04/30 13:00
1.泛型的理解
java的一个高级用法就是泛型类,基本很多框架都会用泛型去搭建,比如Gson。。。。。泛型真是个好东西,可说是海纳百川了。。。所以作为一个android开发更有必要掌握这个东东
泛型可以设计为一个共有的功能返回不同的类型
泛型可说是一种对类型的约束,也可以说是一种对类型的容纳、扩展。。。我也说不好,纯粹是个人的理解
约束:指的泛型要是有具体的类型,那么这个就是对泛型类的一种约束,只对这具体类型起作用,无视所有类
扩展:指的泛型不是具体类类型,而是T,那么对所有类类型都起效。
2、泛型接口、泛型类、泛型方法的区分
1)、泛型接口:其实和普通的接口没啥区别,就是多了一个泛型,可以设计为多用途的模板接口,声明如下:
/** * 类生成器 * @author zhongwr * * @param <T> */public interface Generator<T> {public T next();}
2)、泛型类:和普通的类也没啥区别,就是多了个泛型,可以设计为多用途多功能的,有点像类的组合:声明如下:
/** * 类生成器 * * @author zhongwr * * @param <T> */public class BasicGeneratorImp<T> implements Generator<T> {private Class<T> type;public BasicGeneratorImp(Class<T> type) {this.type = type;}}
这是接收一个类.class类型的泛型类声明
3)、泛型方法:不用说,都是套路,和普通方法的使用没区别,就是多一个泛型参数,泛型返回值;所以在传参的时候必须给予一个明确类型,否则泛型方法就没有任何意义;声明如下:
/** * 泛型方法,用于创建一个类 :泛型方法独立于类,与泛型类 实体类都没关系 * zhongwr 下午9:08:13 * Generator<T> */public static <T> Generator<T> create(Class<T> type) {return new BasicGeneratorImp<T>(type);}
万能的泛型方法,所以要是可以,尽量使用海纳百川的泛型方法。
接下来使用java编程思想的列子:最后附上java工程的demo
泛型接口
/** * 类生成器 * @author zhongwr * * @param <T> */public interface Generator<T> {public T next();}
/** * 类生成器 * * @author zhongwr * * @param <T> */public class BasicGeneratorImp<T> implements Generator<T> {private Class<T> type;public BasicGeneratorImp(Class<T> type) {this.type = type;}public T next() {try {return type.newInstance();} catch (Exception e) {e.printStackTrace();throw new RuntimeException();}}/** * 泛型方法,用于创建一个类 :泛型方法独立于类,与泛型类 实体类都没关系 * zhongwr 下午9:08:13 * Generator<T> */public static <T> Generator<T> create(Class<T> type) {return new BasicGeneratorImp<T>(type);}}
package type.coffee;/** * 制作咖啡类 * * @author Administrator * */public abstract class Coffee {private static int counter = 0;private final long id = counter++;public String toString() {return getClass().getSimpleName() + " " + id;}}
import type.coffee.Americano;import type.coffee.Coffee;/** * 测试入口 * * @author zhongwr * * @param <T> */public class MainTest {public static void main(String[] args) {// 使用泛型方法,创建泛型类System.out.println("className = " + BasicGeneratorImp.create(Americano.class).next());}}
demo:http://download.csdn.net/detail/zhongwn/9651107
0 0
- Java泛型初探
- java 泛型初探
- java泛型初探
- 【java进阶】初探泛型
- Java笔记14:泛型初探
- java学习初探十五之泛型
- 初探java
- Java初探
- 初探JAVA
- 初探Java
- java初探
- java初探
- C#泛型初探
- 泛型初探
- 泛型初探2
- .NET泛型初探
- 泛型入门初探
- java 反射机制初探
- Android--获取位置信息
- hdu4035 Maze(概率dp)
- 编程的三个阶段(转载自微信mindwind)
- PHP :Call to undefined function mysql_connect()
- [kernel 启动流程] (第三章)第一阶段之——proc info的获取
- java泛型初探
- windows qt 使用c++ posix接口编写多线程程序(一)
- Android时间轴效果的实现
- pdo-quote()之防 sql 注入
- Parencodings
- js中全部变量与局部变量的问题与闭包
- 控件颜色,透明度对照表
- android源代码分享
- python & openCV 人像-1