首页 > 编程 > Java > 正文

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

2019-11-26 08:47:28
字体:
来源:转载
供稿:网友

本文实例讲述了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<String> list){}}public class MethodParameterTest{  public static void main(String[] args)throws Exception  {   // 获取String的类   Class<Test> 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.lang.String>

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表