java反射与泛型
‘壹’ java通过反射出来的类如何作为泛型的类型
时隔四年后看到的。一般出现这种情况可以 写一个用来统一类型的 接口;
例如:
public class TypeVre {
interface A {
}
class B implements A{}
class C implements A{}
public static void main(String[] args) {
List<A> ss =new ArrayList<A>();
TypeVre typeVre = new TypeVre();
B b = typeVre.new B();
C c = typeVre.new C();
ss.add(b);
ss.add(c);
int size = ss.size();
for (int i = 0; i < size; i++) {
System.out.println(ss.get(i));
}
}
}
‘贰’ java 怎么通过反射调用泛型函数
你为什么要这样做呢?感觉没有意义埃 你的问题类似于这样。 Person a = clazz.newInstance(); 你要把person这个声明方法用反射得到是不可能的。 一般反射是用来写框架用的,平常的代码很少用到。创建对象可以用工厂模式
‘叁’ java的泛型及反射,是什么
反射用在泛型中不常见,应用开发人员几乎不用。因为Java虚拟机中几乎没有泛型的痕迹,要获得泛型类型信息,只有通过反射,幸好sun公司提供了Type接口等泛型反射类库。简短几句,不知你是否满意。
‘肆’ JAVA 利用反射怎么执行带有泛型参数的方法
给你一个地址,你可以参考一下JAVA反射执行泛型参数的说明:
http://blog.csdn.net/u013604031/article/details/51006792
‘伍’ 在Java中怎么用反射创建泛型List
参数类型在编译时被擦除了,这时不需要指定类型,直接List<Object>就可以了。
‘陆’ java反射与泛型:Class<>和Class一样吗我感觉一样
java5开始的泛型。Class<?>只是其中一种。
Vector<?> vec = new Vector<?>()
Vector<int> vec = new Vector<int>()
Vector vec1 = new Vector(); 这俩一样不?
---------------------------------------------------------
而class<?>与class的不同之处就是,前者能拿到泛型的具体类型,而后者不能。
这往往是设计框架时使用的,极具灵活性。
平时一般用的很少。因为反射通常只会反射一个普通的类,所以也就没啥区别了
‘柒’ 如何通过反射获得java类中泛型T的类型
T.getClass()或者T.class都是非法的,因为T是泛型变量。
由于一个类的类型是什么是在编译期处理的,故不能在运行时直接在Base里得到T的实际类型。
有一种变通的实现方式:
import java.lang.reflect.Array;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
public class Generic extends Base<String> {
public static void main(String[] args) {
Generic c = new Generic();
System.out.println(c.array);
}
Object array ;
public Generic() {
array = Array.newInstance(getGenericType(0), 100);
}
}
class Base<T> {
public Class getGenericType(int index) {
Type genType = getClass().getGenericSuperclass();
if (!(genType instanceof ParameterizedType)) {
return Object.class;
}
Type[] params = ((ParameterizedType) genType).getActualTypeArguments();
if (index >= params.length || index < 0) {
throw new RuntimeException("Index outof bounds");
}
if (!(params[index] instanceof Class)) {
return Object.class;
}
return (Class) params[index];
}
}
其中Base<T>是泛型类,在父类中声明getGenericType,子类继承具体的Base<String>,那么在子类中就可以通过getGenericType(0)获取到String的class.
‘捌’ Java Web项目中反射工具类里关于泛型的使用
这是一个泛型方法,返回值是Class<T>类型的
看看这个http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html
返回值类型是Class类型