「java反射参数类型泛型」java反射用法

博主:adminadmin 2023-03-18 21:03:08 408

本篇文章给大家谈谈java反射参数类型泛型,以及java反射用法对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

本文目录一览:

JAVA反射问题,一个方法类的参数能否通过设置成泛型或者什么来接收反射的CLASS。

Method m = clazz.getDeclaredMethod("methodCompareCommon", List.class, Object.class, Object.class, Object.class);

直接这样就可以反射到你的方法,而且调用时,m.invoke()里面的参数也全是Object的。你要想实现多态的话,那你要传的参数是继承自最顶层的Object了,那就必须得判断了,如果是你自己的一个类的话,就直接可以把父类对象当成方法的参数,然后可以传子类的对象

java参数为泛型的方法怎么反射

通过方法,取得真正的类型的Class,就可以运用了

ParameterizedType parameterizedType = (ParameterizedType) this.getClass().getGenericSuperclass();//获取当前new对象的泛型的父类类型  

    Class clazz = (ClassT) parameterizedType.getActualTypeArguments()[0];  

    System.out.println("clazz == "+clazz);  

~

~

~

~

如何获取java泛型的参数类型

一般可以使用反射来获取泛型参数的实际类型,以下是详细代码:

import java.lang.reflect.Field;

import java.lang.reflect.ParameterizedType;

import java.lang.reflect.Type;

import java.util.Map;

public class GenericTest {

/*使用反射来获取泛型信息*/

private MapString, Integer score;

public static void main(String[] args) throws SecurityException, NoSuchFieldException {

//Class clazz = GenericTest.class;

ClassGenericTest clazz = GenericTest.class;

//System.out.println(clazz);

Field f = clazz.getDeclaredField("score");

//直接使用getType只对普通类型有效,无法取到泛型参数

Class? a = f.getType();

System.out.println("score的类型是:"+a);

//获得Field实例f的泛型类型

Type gType = f.getGenericType();

//如果gType类型是ParameterizedType的对象

if (gType instanceof ParameterizedType) {

ParameterizedType pType = (ParameterizedType) gType;

//获取原始类型

Type rType = pType.getRawType();

System.out.println("原始类型是:"+rType);

//取得泛型类型参数

Type[] tArgs = pType.getActualTypeArguments();

System.out.println("泛型类型是:");

for (int i = 0; i tArgs.length; i++) {

System.out.println("第"+i+"个泛型类型是:"+tArgs[i]);

}

}else{

System.out.println("获取泛型类型出错!");

}

}

}

输出结果如下:

score的类型是:interface java.util.Map

原始类型是:interface java.util.Map

泛型类型是:

第0个泛型类型是:class java.lang.String

第1个泛型类型是:class java.lang.Integer

关于java反射参数类型泛型和java反射用法的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。