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);

java反射getmethod用法_Java反射之 getMethod() 与invoke的使用相关推荐

  1. java privilege的用法_java反射--注解的定义与运用以及权限拦截

    自定义注解类编写的一些规则: 1. Annotation型定义为@interface, 所有的Annotation会自动继承java.lang.Annotation这一接口,并且不能再去继承别的类或是 ...

  2. java反射机制知识_Java反射机制讲解,程序员必须掌握的知识点

    关注程序员7歌,一起用技术改变世界 大家好,我是程序员7歌,今天我为大家讲解Java的反射机制. 首先我们来看看反射的概念: Java反射说的就是在程序运行中,任何一个类,我们都可以知道这个类的方法和 ...

  3. java反射随意值_Java反射总结

    能够分析类能力的程序称为反射.对于给定的Java类名,可以通过反射获取类的信息.将类的各成分映射出相应的Java类. Class类 在程序运行期间,Java运行时系统始终对所有的对象维护一个被称为运行 ...

  4. java反射源码_java反射技术详解附源码

    在学校学习Java时,由于学的不扎实,也没经历过太多实战项目,所以很多重要的知识点瞟一眼就过去了,比如现在要讲的反射,当时直接就忽略掉了,可现在发现很多地方需要反射,不得不重新学习一下,上学欠了太多债 ...

  5. java反射最佳实践_Java 反射最佳实践 – 码农网

    标签: 概要:最简单优雅的使用反射. 本文的例子都可以在示例代码中看到并下载,如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可以提交pull request.本文的示例代码主要 ...

  6. java反射的原理_java反射机制的实现原理

    java反射机制的实现原理 反射机制: 所谓的反射机制就是java语言在运行时拥有一项自观的能力. 通过这种能力可以彻底的了解自身的情况为下一步的动作做准备. 下面具体介绍一下java的反射机制.这里 ...

  7. java反射 数组类型_Java反射-数组

    通过反射使用数组有时会比较棘手.特别是需要获得一个特定类型数组的Class对象,如int[]等.本文将讨论如何通过反射创建数组和获得他们的Class对象. 注意:本文在阅读Eyal Lupu的博客&q ...

  8. java反射创建实例_Java反射创建实例

    Java反射创建实例 package com.wkcto.chapter08.demo02; import java.lang.reflect.Constructor; import java.lan ...

  9. java 反射 工厂模式_Java反射机制demo(七)—反射机制与工厂模式

    Java反射机制demo(七)-反射机制与工厂模式 工厂模式 简介 工厂模式是最常用的实例化对象模式. 工厂模式的主要作用就是使用工厂方法代替new操作. 为什么要使用工厂模式?直接new不好吗? 直 ...

最新文章

  1. eclipse run on server
  2. 二十六、事务的隔离级别
  3. php 华为语音通话,语音通知API_语音通话 VoiceCall_API参考_语音通知API_华为云
  4. Quartz-任务调度信息持久化到DB中
  5. linux下查找java的安装路径和java和tomcat的环境配置
  6. 直播 | AAAI 2021:文本对抗攻防中的对抗训练方法
  7. Web前端开发JavaScript基础(3)
  8. FFmpeg 4.2“艾达”发布
  9. 构造方法与对象的创建 java 1614780813
  10. C# 获取文件路径大全
  11. Whistle抓包详细使用教程
  12. 数据仓库之元数据管理
  13. mars老师android开发视频教程5季+java4android视频教程
  14. 如何在ubuntu-1804中增加swapfile
  15. WebLogic安装说明
  16. PSCAD中的频变参数线路模型(Frequency-Dependent (Phase) Line Model)
  17. 码云推送代码后不显示贡献度
  18. 网易云信IMweb版集成实现(PHP直接上码)
  19. FreeBSD常用命令110条
  20. 整个canvas玩一玩,做一个简单的水印相机小程序

热门文章

  1. 云E办:JWT strings must contain exactly 2 period characters. Found: 0
  2. Django | 模板语法之标签的使用(if,for..)
  3. 世界花滑冠军于小雨为国潮品牌爱斯沃代言
  4. IOS编程开发中的问题小结(一)
  5. non-virtual函数、virtual函数和pure virtual函数的区别
  6. 【JAVA面试】反射机制
  7. Spring Cloud Fegin 详解(一)
  8. VB6-对数值的舍入-四舍五入/四舍六入五留双-及推广
  9. word文件名后自动加1_那些Word的使用小技巧
  10. ElasticSearch学习笔记(8)· ES集群的搭建