java反射如何根据方法返回类型来接收方法的返回值可以获取到方法名,返回值类型。

java反射如何根据方法返回类型来接收方法的返回值可以获取到方法名,返回值类型。,第1张

2

3import javalangreflectMethod;

4import javalangreflectParameterizedType;

5import javalangreflectType;

6import javautilList;

7import javautilMap;

8

9publicclass TempTest {

10

11publicstaticvoid main(String[] args) throws Exception {

12 Method[] methods = TempTestclassgetDeclaredMethods();

13for (Method method : methods) {

14 Systemoutprintln("method:"+ methodgetName());// 方法

15

16////////////////方法的参数

17 Systemoutprintln(" paramTypeType: ");

18 Type[] paramTypeList = methodgetGenericParameterTypes();// 方法的参数列表

19for (Type paramType : paramTypeList) {

20 Systemoutprintln(""+ paramType);// 参数类型

21if (paramType instanceof ParameterizedType)/// 如果是泛型类型 /{

22 Type[] types = ((ParameterizedType) paramType)

23 getActualTypeArguments();// 泛型类型列表

24 Systemoutprintln(" TypeArgument: ");

25for (Type type : types) {

26 Systemoutprintln(""+ type);

27 }

28 }

29 }

30

31////////////////方法的返回值

32 Systemoutprintln(" returnType: ");

33 Type returnType = methodgetGenericReturnType();// 返回类型

34 Systemoutprintln(""+ returnType);

35if (returnType instanceof ParameterizedType)/// 如果是泛型类型 /{

36 Type[] types = ((ParameterizedType) returnType)

37 getActualTypeArguments();// 泛型类型列表

38 Systemoutprintln(" TypeArgument: ");

39for (Type type : types) {

40 Systemoutprintln(""+ type);

41 }

42 }

43

44 }

45

46 }

47

48publicstatic String method1(List list) {

49returnnull;

50 }

51

52privatestatic Map<String, Double> method2(Map<String, Object> map) {

53returnnull;

54 }

55

56}

很简单哟,但首先明确一点,java并没有提供方法可以直接返回引用名称的,我们只能自己实现,方法如下:

1、类中定义一个私有String类型的 instanceName 字段,并写get方法;

2、在构造方法中使用有参构造为其赋值;

3、new对象时传入引用名称;

3、使用的地方直接调用get方法即可返回改引用名称;

public static void printMethods(Class cl)

{

Method[] methods =clgetDeclaredMethods();//返回一个包含方法对象的数组

for(Method m : methods)//循环该类的每个方法

{

Class retType = mgetReturnType();//该方法的返回类型,

Sting name = mgetName();//获得方法名

Systenoutprint(" "+ModifiertoString(mgetModifiers());打印方法修饰符

Systemoutprint(" "+retTypegetName() + " " + name +"(");

Class[] paramTypes = mgetParameterTypes();//获得一个方法参数数组(getparameterTypes用于返回一个描述参数类型的Class对象数组)

for(int j = 0 ; j < paramTypeslength ; j++)

{

if ( j > 0 ) Systemoutprint(" , "); //如果有多个参数,中间则用逗号隔开,否则直接打印参数

Systemoutprint (paramTypes[ j ]getName);

}

Systemoutprintln (" );");

}}

//////////getparameterTypes方法用于返回一个描述参数类型的Class对象数组)

public void method(TblFwlx obj) {

Class clazz = objgetClass();

Field[] fields = objgetClass()getDeclaredFields();//获得属性

for (Field field : fields) {

PropertyDescriptor pd = new PropertyDescriptor(fieldgetName(),

clazz);

Method getMethod = pdgetReadMethod();//获得get方法

Object o = getMethodinvoke(obj);//执行get方法返回一个Object

}

}

以上就是关于java反射如何根据方法返回类型来接收方法的返回值可以获取到方法名,返回值类型。全部的内容,包括:java反射如何根据方法返回类型来接收方法的返回值可以获取到方法名,返回值类型。、java 中怎么获得对象引用的名称、java反射获得方法名后怎样判断方法是否含有参数等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9624963.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存