当前位置:首页 » 编程语言 » java反射与泛型

java反射与泛型

发布时间: 2022-12-07 03:43:03

‘壹’ 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项目中反射工具类里关于泛型的使用

  1. 这是一个泛型方法,返回值是Class<T>类型的

    看看这个http://www.cnblogs.com/iyangyuan/archive/2013/04/09/3011274.html

  2. 返回值类型是Class类型

热点内容
英雄联盟皮肤源码 发布:2025-01-19 22:56:14 浏览:94
三星手机忘记解锁密码怎么办 发布:2025-01-19 22:45:43 浏览:291
Java为什么没有预编译命令 发布:2025-01-19 22:44:14 浏览:303
路由器上写的初始无密码什么意思 发布:2025-01-19 22:42:38 浏览:847
mysql配置主从数据库 发布:2025-01-19 22:35:33 浏览:730
4大数据库 发布:2025-01-19 22:34:35 浏览:975
win10用什么解压 发布:2025-01-19 22:27:15 浏览:799
反编译连接数据库 发布:2025-01-19 22:07:55 浏览:787
贵州省发票软件服务器地址 发布:2025-01-19 22:00:12 浏览:695
linux的单用户模式 发布:2025-01-19 21:55:29 浏览:426