java 反射 参数_Java 8新增的方法参数反射实例分析

本文实例讲述了Java 8新增的方法参数反射。分享给大家供大家参考,具体如下:

一 点睛

Java 8在java.lang.reflect包下新增了一个Executable抽象基类,该对象代表可执行的类成员,该类派生了Constructor、Method两个子类。

Executable基类提供了大量方法来获取修饰该方法或构造器的注解信息;还提供了isVarArgs()方法用于判断该方法或构造器是否包含数量可变的形参,以及通过getModifiers()方法来获取该方法或构造器的修饰符。除此之外,Executable提供了如下两个方法来获取该方法或参数的形参个数及形参名。

int getParameterCount():获取该构造器或方法的形参个数。

Parameter[] getParameters():获取该构造器或方法的所有形参。

上面第二个方法返回了一个Parameter[]数组,Parameter也是Java 8新增的API,每个Parameter对象代表方法或构造器的一个参数。Parameter也提供了大量方法来获取声明该参数的泛型信息。

二 实战

1 代码

import java.lang.reflect.*;

import java.util.*;

class Test

{

public void replace(String str, List list){}

}

public class MethodParameterTest

{

public static void main(String[] args)throws Exception

{

// 获取String的类

Class clazz = Test.class;

// 获取String类的带两个参数的replace()方法

Method replace = clazz.getMethod("replace"

, String.class, List.class);

// 获取指定方法的参数个数

System.out.println("replace方法参数个数:" + replace.getParameterCount());

// 获取replace的所有参数信息

Parameter[] parameters = replace.getParameters();

int index = 1;

// 遍历所有参数

for (Parameter p : parameters)

{

if (p.isNamePresent())

{

System.out.println("---第" + index++ + "个参数信息---");

System.out.println("参数名:" + p.getName());

System.out.println("形参类型:" + p.getType());

System.out.println("泛型类型:" + p.getParameterizedType());

}

}

}

}

2 运行

E:\Java\疯狂java讲义\codes\18\18.3>javac -parameters -d . MethodParameterTest.java

E:\Java\疯狂java讲义\codes\18\18.3>java MethodParameterTest

replace方法参数个数:2

---第1个参数信息---

参数名:str

形参类型:class java.lang.String

泛型类型:class java.lang.String

---第2个参数信息---

参数名:list

形参类型:interface java.util.List

泛型类型:java.util.List

希望本文所述对大家java程序设计有所帮助。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值