Java Reflection(五):方法
2023-09-11 14:16:10 时间
内容索引
获取Method对象
方法参数以及返回类型
通过Method对象调用方法
使用Java反射你可以在运行期检查一个方法的信息以及在运行期调用这个方法,通过使用java.lang.reflect.Method类就可以实现上述功能。在本节会带你深入了解Method对象的信息。
获取Method对象可以通过Class对象获取Method对象,如下例:
Class aClass = ...//获取Class对象 Method[] methods = aClass.getMethods();
返回的Method对象数组包含了指定类中声明为公有的(public)的所有变量集合。
如果你知道你要调用方法的具体参数类型,你就可以直接通过参数类型来获取指定的方法,下面这个例子中返回方法对象名称是“doSomething”,他的方法参数是String类型:
Class aClass = ...//获取Class对象 Method method = aClass.getMethod("doSomething", new Class[]{String.class});
如果根据给定的方法名称以及参数类型无法匹配到相应的方法,则会抛出NoSuchMethodException。
如果你想要获取的方法没有参数,那么在调用getMethod()方法时第二个参数传入null即可,就像这样:
Class aClass = ...//获取Class对象 Method method = aClass.getMethod("doSomething", null);方法参数以及返回类型
你可以获取指定方法的方法参数是哪些:
Method method = ... //获取Class对象 Class[] parameterTypes = method.getParameterTypes();
你可以获取指定方法的返回类型:
Method method = ... //获取Class对象 Class returnType = method.getReturnType();通过Method对象调用方法
你可以通过如下方式来调用一个方法:
//获取一个方法名为doSomesthing,参数类型为String的方法 Method method = MyObject.class.getMethod("doSomething", String.class); Object returnValue = method.invoke(null, "parameter-value1");
传入的null参数是你要调用方法的对象,如果是一个静态方法调用的话则可以用null代替指定对象作为invoke()的参数,在上面这个例子中,如果doSomething不是静态方法的话,你就要传入有效的MyObject实例而不是null。
Method.invoke(Object target, Object … parameters)方法的第二个参数是一个可变参数列表,但是你必须要传入与你要调用方法的形参一一对应的实参。就像上个例子那样,方法需要String类型的参数,那我们必须要传入一个字符串。
Java String 的 常量池 和 intern 方法 简析 Java String 的 常量池 和 intern 方法 简析字符串常量池和 intern 方法 先举个例子,我们创建 10000 个相同的 String,并且不使用常量池 String[] list = new String[10000]; for (int i = 0; i 10000; i++) { list[i] = new String(new char[]{ a , b , c 结果是:每个 String 都用新开的对象,占用大量内存
现在我们这样创建,增加一个 map ,key 和 value 内容一样,每次取的时候,先检查一下 map 里面有没
Java的学习笔记(04)方法 Java方法01 方法是语句的集合,执行一个功能。方法再程序中被创建,再其他地方被引用 一个方法只做一个功能 方法的命名规则:首字母小写,驼峰规则。 package method; public class Demo01 { //mian 方法 public static void main(String[] args) { int sum = add(1,2); //调用一个方法:加法 // 实际参数:实际调用传递给
【Java编程进阶】方法初识 方法是组合在一起来执行操作语句的集合`,将具有独立功能的代码块组织成为一个整体,使其具有特殊功能,并且能实现达到代码复用的效果。例如我们要在程序中多次判断一个数字是奇数还是偶数,这时,我们就可以将判断一个数的奇偶性的代码段封装成一个方法,后面再使用时只需要调用这个方法,大大提高了编程的效率和代码的复用性。
Java练习题——抽象类、方法以及接口 由于三种动物都有共同属性:名字和属性,并且有共同行为:吃,所以只需要在共同父类(Animal)中编写标准Javabean类即可
Java练习题——方法(基础版) 求数组内最大值以及定义一个随机数组在之前已经介绍过了,只需要将这部分的代码打包放在一个方法内,并在main方法中调用即可
相关文章
- java高级用法之:在JNA中将本地方法映射到JAVA代码中
- java高级用法之:调用本地方法的利器JNA
- java 8 lambda表达式中的异常处理
- Java对ad操作
- 【Java】+操作数据库
- 1. java.util.concurrent - Java 并发工具包
- Java操作系统硬件的方法Unsafe
- java并发4-单例设计方法
- java构造方法的私有化
- Java配置环境变量、方法和原因
- JMeter学习-027-JMeter参数文件(脚本分发)路径问题:jmeter.threads.JMeterThread: Test failed! java.lang.IllegalArgumentException: File distributed.csv must exist and be readable解决方法
- java查询手机号归属地
- 原生java调用webservice的方法,不用生成客户端代码
- java 通过调用存储过程获取结果集
- java高级用法之:无所不能的java,本地方法调用实况
- Java_类似java.lang.VerifyError: Expecting a stackmap frame at branch target 22 in method的解决方法
- java枚举enum equal与==
- Java clone()方法来由及用法
- 正則表達式基础及java使用
- Java数组List换算方法
- 【JAVA】浅谈java枚举类