14.2.2泛化的java引用
来源:互联网 发布:unity3d 骨骼动画 编辑:程序博客网 时间:2024/06/05 10:32
P353
Class引用是指向某个类型的Class对象, 在具体使用中, 为了避免无意中的错误类型替换, 可以使用模板来进一步约束Class的使用.
package com.cnsuning.src;import java.util.ArrayList;public class Main {public static void main(String[] args) {ListFill<MyInteger> lFill = new ListFill<MyInteger>(MyInteger.class);System.out.println(lFill.fillList(10));}}class ListFill<T> {private Class<T> type;public ListFill(Class<T> type) {this.type = type;}public ArrayList<T> fillList(int size) {ArrayList<T> list = new ArrayList<T>();try {for (int i = 0; i < size; i++) {list.add(type.newInstance());}} catch (InstantiationException | IllegalAccessException e) {// TODO Auto-generated catch blockthrow new RuntimeException(e);}return list;}}class MyInteger{private static int count=0;private int id = ++count;public String toString(){return Integer.toString(id);}}
输出
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
对不想限定类型的Class声明可以使用Class<?>的形式说明在这里你要用一个比较宽泛的Class引用.
PS: 值得注意的是, Class对象的newInstance()方法调用的前提是该类型的类有一个默认构造函数(无参构造函数)
除了上边展示的, Class用模板限定类型时还可以指定继承关系, 如<? extends father>或<? super child>, 具体见下边代码
package com.cnsuning.src;public class Main {public static void main(String[] args) {//子类模板用法Class<? extends A> aChild = B.class;aChild = C.class; // 子类aChild = D.class; // 子类的子类aChild = A.class; // 自身// 这里显示模板提供的编译时类型检查// !aChild = E.class;//父类模板用法Class<? super B> bSuper = A.class;Class<B> bClass = B.class;bSuper = bClass.getSuperclass();//虽然JAVA中无多继承, 在这里可以确定B的父类就是A,但依然不能这样明确指定模板类型//Class<A> aClass = bClass.getSuperclass();}}class A {}class B extends A {}class C extends A {}class D extends B {}class E {}
0 0
- 14.2.2泛化的java引用
- java编程思想学习笔记 泛化的class引用
- Class对象以及泛化的Class引用
- java泛化
- Dubbo-泛化引用
- Dubbo泛化引用
- dubbo泛化调用和泛化引用
- 用Java泛化写的伸展树
- 11.dubbo结果缓存、泛化引用、泛化实现
- 道德的泛化
- springmvc controller的泛化
- 算法的泛化过程
- Class对象的泛化
- java泛化自定义类应用
- 关于Eclipse3.2中出现的警告泛化
- Java的强引用、软引用、弱引用、虚引用
- java的强引用,软引用,弱引用,虚引用
- java的强引用、软引用、弱引用、虚引用
- Android面试题精选
- lua和c的交互
- c# winform程序右下角显示气泡提示效果
- solr安装-tomcat单机版
- MyEclipse8.5插件FindBugs的安装
- 14.2.2泛化的java引用
- Python特殊语法:filter、map、reduce、lambda
- Spring AOP 理解
- UVa 10282 & POJ 2503 - Babelfish
- Sybase分页语句存储过程实现(二)
- 【Android】xml文件里面出现unbound prefix的问题
- struct clk clk-get() clk_enable();
- 从一个字符串中找出第一个不重复字符
- Android Bundle类