Class类获取成员方法对象的方法

  • 方法分类

    方法名 说明
    Method[] getMethods() 返回所有公共成员方法对象的数组,包括继承的
    Method[] getDeclaredMethods() 返回所有成员方法对象的数组,不包括继承的
    Method getMethod(String name, Class<?>... parameterTypes) 返回单个公共成员方法对象
    Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回单个成员方法对象
  • 示例代码

public class ReflectDemo01 {public static void main(String[] args) throws Exception {//获取Class对象Class<?> c = Class.forName("com.leon_02.Student");//Method[] getMethods() 返回一个包含 方法对象的数组, 方法对象反映由该 Class对象表示的类或接口的所有公共方法,包括由类或接口声明的对象以及从超类和超级接口继承的类//Method[] getDeclaredMethods() 返回一个包含 方法对象的数组, 方法对象反映由 Class对象表示的类或接口的所有声明方法,包括public,protected,default(package)访问和私有方法,但不包括继承方法
//        Method[] methods = c.getMethods();Method[] methods = c.getDeclaredMethods();for(Method method : methods) {System.out.println(method);}System.out.println("--------");//Method getMethod(String name, Class<?>... parameterTypes) 返回一个 方法对象,该对象反映由该 Class对象表示的类或接口的指定公共成员方法//Method getDeclaredMethod(String name, Class<?>... parameterTypes) 返回一个 方法对象,它反映此表示的类或接口的指定声明的方法 Class对象//public void method1()Method m = c.getMethod("method1");//获取无参构造方法创建对象Constructor<?> con = c.getConstructor();Object obj = con.newInstance();//        obj.m();//在类或接口上提供有关单一方法的信息和访问权限//Object invoke(Object obj, Object... args) 在具有指定参数的指定对象上调用此 方法对象表示的基础方法//Object:返回值类型//obj:调用方法的对象//args:方法需要的参数m.invoke(obj);//        Student s = new Student();
//        s.method1();}
}

Method类用于执行方法的方法

方法名 说明
Objectinvoke(Object obj,Object... args) 调用obj对象的成员方法,参数是args,返回值是Object类型

反射获取成员方法并使用练习【应用】

  • 案例需求

    • 通过反射获取成员方法并调用

  • 代码实现

    • 学生类:参见上方学生类

    • 测试类

public class ReflectDemo02 {public static void main(String[] args) throws Exception {//获取Class对象Class<?> c = Class.forName("com.leon_02.Student");//Student s = new Student();Constructor<?> con = c.getConstructor();Object obj = con.newInstance();//s.method1();Method m1 = c.getMethod("method1");m1.invoke(obj);//s.method2("林青霞");Method m2 = c.getMethod("method2", String.class);m2.invoke(obj,"林青霞");//        String ss = s.method3("林青霞",30);
//        System.out.println(ss);Method m3 = c.getMethod("method3", String.class, int.class);Object o = m3.invoke(obj, "林青霞", 30);System.out.println(o);//s.function();
//        Method m4 = c.getMethod("function"); //NoSuchMethodException: com.itheima_02.Student.function()Method m4 = c.getDeclaredMethod("function");m4.setAccessible(true);m4.invoke(obj);}
}

反射获取成员方法并使用【应用】相关推荐

  1. Java基础--通过反射获取成员方法并使用

    /** 通过反射获取成员方法并使用 * Method getMethod(String name, Class<?>... parameterTypes) * Method:* Objec ...

  2. 反射获取成员方法并运行

    /** 反射获取成员防范并运行* public void eat() {}*/ public class ReflectDemo6 {public static void main(String[] ...

  3. [Java基础]反射获取成员方法并使用

    代码如下: package ClassObjectPack01;import ClassObjectPack.Student;import java.lang.reflect.Constructor; ...

  4. [Java基础]反射获取成员方法并使用练习

    代码如下: package ClassObjectPack;public class Student {private String name;int age;public String addres ...

  5. Java24-day15(完结)【反射(类加载器、反射)、反射获取构造方法-成员变量-成员方法、模块化(概述、模块基本使用、模块服务使用)】

    视频+资料[链接:https://pan.baidu.com/s/1MdFNUADVSFf-lVw3SJRvtg   提取码:zjxs] Java基础--学习笔记(零起点打开java世界的大门)--博 ...

  6. 反射获取空参数成员方法并运行

    package cn.learn.demo1;import java.lang.reflect.Method;/** 反射获取成员方法并运行* public void eat(){}*/ public ...

  7. java 反射 获取成员_java 反射获取成员

    package com.wxjaa; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java ...

  8. 反射获取有参数的成员方法并运行

    package cn.learn.demo1;import java.lang.reflect.Method;/** 反射获取有参数的成员方法并执行* public void sleep(String ...

  9. Java中反射获取成员变量、构造方法、成员方法及类名

    都说反射是框架的灵魂,但是反射到底是啥呢,今天就聊聊反射的基础操作,也是必备操作. 反射机制是在程序运行时,对任意一个类,都能够知道这个类的所有属性和方法,对于任意一个对象,都能调用他的任意一个属性和 ...

最新文章

  1. LESSON 12.8 原理进阶 (1):GBDT数学流程与残差概念辨析
  2. H5+JS实现《Just Do 8》游戏源码分享
  3. Linux最全命令详解,请记下来!
  4. 一个div压在另一个div上面_【CSS小分享】用CSS画一个新拟态风格键盘
  5. IDEA如何添加本地项目到git上
  6. transient关键字和volatile关键字
  7. java jndi tomcat_tomcat下jndi的三种配置方式
  8. 关于银行,有哪些有趣的冷知识
  9. SharePoint Designer 2007,强大的工作流设计器
  10. springboot配置手动提交_Spring Boot 入门教程 | 图文讲解
  11. Intel CPU参数查询网站
  12. c++语言杨辉三角,杨辉三角 (C++代码)
  13. 分享七个超好用的免费工具网站,每一个都是神器!
  14. 如何通过初等行(列)变换求矩阵的单位矩阵(同时还能求逆)?
  15. Jenkins - cannot find symbol
  16. Android xml里面product的值来自哪里以及怎么影响编译?
  17. 理解Javascript的正则表达式
  18. 【python】模拟淘宝的客服自动回复系统-socket,json,time模块的应用
  19. 无FTTR不千兆,华为星光F30让家中不再有“隐秘的角落”
  20. Swift 首次调试断点慢的问题解法 | 优酷 Swift 实践

热门文章

  1. 大道至简读书笔记02
  2. spring mvc后端校验validator
  3. hdu 3068 最长回文【manacher】(模板题)
  4. django实现图片上传和显示
  5. 2017年总结的前端文章——CSS高级技巧汇总
  6. bootstrap bootstrapTable 隐藏列
  7. Oracle学习操作(6)函数与存储过程
  8. OSI七层与TCP/IP五层
  9. ibatis的iterate使用
  10. ---WebCam网络摄像头7 cmos--yuv rgb , Format............:V4L2_PIX_FMT_YUYV