反射getmethod参数_java通过反射获取属性值

反射getmethod参数_java通过反射获取属性值1、forName方法forName是一个静态方法,其作用:通过调用来获取类名对应的Class对象,同时将Class对象加载进来。如果将类名保存在字符串(如xml)中,就可以在程序运行时,动态调用加载。注意:只有调用的参数是类名或者方法时,才可用。2、newInstance()方法作用:将对象实例化。返回类型为Object。与new的区别在于,new可以带参,而newInstance()不可以,…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

1、forName 方法

forName是一个静态方法,其作用:通过调用来获取类名对应的Class对象,同时将Class对象加载进来。

如果将类名保存在字符串(如xml)中,就可以在程序运行时,动态调用加载。

注意:只有调用的参数是类名或者方法时,才可用。

2、newInstance()方法

作用:将对象实例化。返回类型为Object。与new的区别在于,new可以带参,而newInstance()不可以,一边初始化无参类。通常与forName()配合使用。

例:

String str = “java.util.Date”;

Class cl1= Class.forName(str);//加载java.util.Date类

Object obj = cl1.newInstance();//实例化cl1

3、getMethod()方法

getMethod方法与getField方法类似,getField方法根据表示域名的字符串,返回一个Field对象。而getMethod方法则根据方法名称和相关参数,来定位需要查找的Method对象并返回。

getMethod与getDeclareMethods方法的区别在于,后者返回一个Method对象数组,需要自己在结果中查找所需Method对象。

原型: Method getMethod(String name,Class…parameterTypes)

参数解释:name: method的名称

parameterTypes:method的参数类型的列表(参数顺序需按声明method时的参数列表排列)

返回:符合method名称和参数的method对象

抛出错误:NoSuchMethodException

原因:没有找到所要查询的Method对象  或  Method名称为“”或“”

NullPointerException

原因:所要查询的Method对象的名称为null

SecurityException

原因:调用的类或其父类没有调用权限

例:

Method m1 = Employee.class.getMethod(“getName”);

Method m2 = Employee.class.getMethod(“raiseSalary”,double.class);  上面例子分别获得了Employee类的getName方法和raiseSalary方法的方法指针m1,m2。

4、invoke方法

作用:调用包装在当前Method对象中的方法。

原型:Object invoke(Object obj,Object…args)

参数解释:obj:实例化后的对象

args:用于方法调用的参数

返回:根据obj和args调用的方法的返回值

抛出错误:IllegalAccessException

原因:Method对象强制Java语言执行控制 或 无权访问obj对象

IllegalArgumentException

原因:方法是实例化方法,而指定需要调用的对象并不是实例化后的类或接口

例:

Class l = Class.forName(“test1.A”);

Object obj1 = l.newInstance();

Object[] obj2 = new Object[1];

obj2[0] = new String(“hello world”);

Method m = l.getMethod(“a1”,new Class[] { String.class });

Object obj3 = m.invoke(obj1, obj2);

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/193075.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • map集合遍历的三种方式(map遍历的两种方式)

    Map集合的遍历与List和Set集合不同。Map有两组值,因此遍历时可以只遍历值的集合,也可以只遍历键的集合,也可以同时遍历。Map以及实现Map的接口类(如HashMap、TreeMap、LinkedHashMap、Hashtable等)都可以用以下几种方式遍历。1)在for循环中使用entries实现Map的遍历(最常见和最常用的)。publicstati…

    2022年4月17日
    47
  • 全网最全python爬虫精进

    全网最全python爬虫精进4.25(第一天)**第0关认识爬虫**1、初始爬虫爬虫,从本质上来说,就是利用程序在网上拿到对我们有价值的数据。2、明晰路径2-1、浏览器工作原理(1)解析数据:当服务器把数据响应给浏览器之后,浏览器并不会直接把数据丢给我们。因为这些数据是用计算机的语言写的,浏览器还要把这些数据翻译成我们能看得懂的内容;(2)提取数据:我们就可以在拿到的数据中,挑选出对我们有用的数据;(3)存储数据:将挑选出来的有用数据保存在某一文件/数据库中。2-2、爬虫工作原理(1)获取数据:爬虫程序会根据

    2022年5月27日
    35
  • SSRS:使用SQL2008教程学习Reporting Services之数据库AdventureWorks2008问题_学习笔记1

    SSRS:使用SQL2008教程学习Reporting Services之数据库AdventureWorks2008问题_学习笔记1首先声明我是菜鸟,刚开始学习ReportingServices。在学习教程中的一点笔记。从SQL2005开始,微软就提供了强大的ReportingServices功能,的确好用,对于经常需要出复杂报表的朋友可谓是一大欢喜。SQL2008中的SQLServer教程是一本很好的学习资料,我的是SQL2008非R2版,ReportingServices章节中需要用到微软示例…

    2025年9月3日
    11
  • springboot idea创建_idea创建java

    springboot idea创建_idea创建java如何在idea中创建一个SpringBoot项目(超详细教学)

    2022年10月9日
    4
  • js中splice方法_js删除数组中指定元素

    js中splice方法_js删除数组中指定元素数组对象splice方法:arr.splice(1,1);这种方式数组长度相应改变,但是原来的数组索引也相应改变

    2022年9月1日
    5
  • linux用命令dpkg,Linux下dpkg命令常用方法整理「建议收藏」

    linux用命令dpkg,Linux下dpkg命令常用方法整理「建议收藏」如果ubuntu要安装新软件,已有deb安装包(例如:iptux.deb),但是无法登录到桌面环境。那该怎么安装?答案是:使用dpkg命令。dpkg命令常用格式如下:代码如下:sudodpkg-Iiptux.deb#查看iptux.deb软件包的详细信息,包括软件名称、版本以及大小等(其中-I等价于–info)代码如下:sudodpkg-ciptux.deb#查看iptux.deb软件…

    2022年5月21日
    57

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号