方法的反射---反射学习笔记(二)
来源:互联网 发布:ajax php 编辑:程序博客网 时间:2024/04/30 00:35
方法的反射:其实就是通过方法的对象来调用方法。
如何获取某个方法:方法的名称和方法的参数列表才能唯一决定某个方法
方法反射如何操作呢?
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;}}
运行结果:
0 0
- 方法的反射---反射学习笔记(二)
- Java反射reflect学习笔记_3:反射类的方法
- JAVA的反射机制学习笔记(二)
- 反射(二) 笔记
- C#反射的学习(二)--访问字段、属性、方法
- Java反射学习总结二(用反射调用对象的私有属性和方法)
- java反射学习笔记二
- Java 反射学习(二)成员变量的反射
- 反射的学习笔记
- 反射的学习笔记
- Java 反射学习(三)成员方法的反射
- Java 反射学习(五)反射的main方法
- Java反射(二):反射的使用
- 反射(构造方法Constructor的反射)
- Java反射(五)----- 方法的反射
- 黑马程序员_java学习笔记二 反射(一)
- Java学习笔记(二)—— 反射
- 学习笔记-利用反射拿到隐藏的方法
- OkHttp实现文件上传进度
- DLL中传递STL参数
- Java之——Spring4+Hibernate4+Atomikos3.3多数据源事务管理
- 谷歌大脑科学家 Caffe缔造者 贾扬清 微信讲座完整版
- JQ各类效果展示(一)
- 方法的反射---反射学习笔记(二)
- java.lang.IllegalStateException: The specified child already has a parent. You must call removeView(
- 预交费功能
- dpkg:另外一个进程已经为状态数据库加了锁
- Android中SQLite用法
- 快捷键
- 关于tracert与traceroute的区别
- what's http headers
- 详解Java回调机制 (Callback) 讲解+实例