方法的反射:其实就是通过方法的对象来调用方法。
如何获取某个方法:方法的名称和方法的参数列表才能唯一决定某个方法
方法反射如何操作呢?
1.要获取一个方法(就是获取类的信息),要获取类的信息首先要获取类的类类型。
获取类的类类型:
类的实例对象.getClass()
2.获取方法:
getMethod(name,
parameterTypes)方法:获取的是public的某一个(name)方法
getDeclaredMethod(name,
parameterTypes)方法:获取自己声明的具体某一个(name)方法
3.方法的反射操作(等于类的对象调用类的方法):
method.invoke(对象,参数列表);
package com.test.methodDemo;
import java.lang.reflect.Method;
public class MethodTest {
public static void main(String[] args) {
// 获取print(int,int)方法
// 1.要获取一个方法就是获取类的信息,获取类的信息首先要获取类的类类型
A a1 = new A();
Class c = a1.getClass();
/*
* 2.获取方法 名称和参数列表类决定getMethod(name,
* parameterTypes)方法获取的是public的某一个(name)方法 getDeclaredMethod(name,
* parameterTypes)方法获取自己声明的具体某一个(name)方法
*/
try {
// 第一种写法
// Method m1 = c.getDeclaredMethod("print", new Class[]{int.class,int.class});
// 第二种写法
Method m1 = c.getDeclaredMethod("print", int.class, int.class);
/*
* 3.方法的反射操作 方法的反射操作是用m对象来调用 和a1.print(10,20)调用的效果完全相同
* 方法如果没有返回值返回null,有返回值返回具体的返回值
*/
// Object o1 = m1.invoke(a1, new Object[] { 10, 20 });
Object o1 = m1.invoke(a1, 10, 20);
Method m2 = c.getDeclaredMethod("print", String.class, String.class);
Object o2 = m2.invoke(a1, "hello", "world");// a1.print("hello","world");
Method m3 = c.getDeclaredMethod("add", double.class, double.class);
Object o3 = m3.invoke(a1, 10, 20);// a1.add(10,20);
System.out.println((double) o3);
} catch (Exception e) {
e.printStackTrace();
}
}
}
class A {
public void print(int a, int b) {
System.out.println(a + b);
}
public void print(String a, String b) {
System.out.println(a.toUpperCase() + "," + b.toUpperCase());// 将String中的所有字符都转换为大写
}
public double add(double a, double b) {
return a + b;
}
}
运行结果:
版权声明:本文为博主原创文章,未经博主允许不得转载。
分享到:
相关推荐
注解与反射—狂神说Java学习笔记
java注解和反射的个人学习笔记
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 2020-4-8 java笔记 String类 2020-4-9 java 比较器 2020-4-10 java笔记 ...
反射学习笔记含代码
java学习——java中的反射学习笔记
java学习笔记java反射机制
介绍反射的概念及初步的应用,有实例.
注解和反射机制的学习笔记
该文档为自己学习反射时所写的类,注释齐全,很容易看懂。
代理和反射(学习笔记)
NULL 博文链接:https://zisefeiniao.iteye.com/blog/381662
最近想研究一下反射,先上网找了找资料,几乎大部分都是照抄MSDN的内容,生涩难懂,几乎没说,又找了找,发现一些强人的实例解析,才稍微有了点门道,个人感觉,反射其实就是为了能够在程序运行期间动态的加载一个外部的DLL...
java学习笔记 [Java学习笔记doc]之反射机制
JAVAWEB反射学习笔记中使用的java文件,用于演示反射的各种效果
java语言反射与动态代理学习笔记
java反射学习的一些基础代码,简单使用反射的案例,为eclipse中的工作空间,编码GBK
java反射机制
基于Java的源码-多线程反射泛型及正则表达式学习笔记和源码.zip
基于java的开发源码-多线程反射泛型及正则表达式学习笔记和源码.zip