Java8新增方法参数反射的示例分析

这篇文章主要为大家展示了“Java8新增方法参数反射的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java8新增方法参数反射的示例分析”这篇文章吧。

创新互联是网站建设技术企业,为成都企业提供专业的成都网站制作、成都网站建设、外贸营销网站建设,网站设计,网站制作,网站改版等技术服务。拥有十载丰富建站经验和众多成功案例,为您定制适合企业的网站。十载品质,值得信赖!

具体如下:

一 点睛

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

以上是“Java8新增方法参数反射的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注创新互联行业资讯频道!


名称栏目:Java8新增方法参数反射的示例分析
文章地址:http://cdiso.cn/article/pghcdh.html

其他资讯