欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

利用反射获取Class对象功能的Method

程序员文章站 2022-03-26 16:39:35
1.获取成员方法们Method[] getMethods()​ Method getMethod(String name,类…parameterTypes)​ Method[] getDeclaredMethods()​ Method getDeclaredMethod(String name,类…parameterTypes)Person类pack...

Method:方法对象

1.获取成员方法们

  • Method[] getMethods()
  • Method getMethod(String name,类<?>…
    parameterTypes)
  • Method[] getDeclaredMethods()
  • Method getDeclaredMethod(String name,类<?>…
    parameterTypes)

2.执行方法:

  • Object invoke(Object obj,Object… args)

3.获取方法名称:

  • String getName: 获取方法名

4.获取类名

  • String getName()

Person类

package cn.domain; public class Person { private String name; private int age; public String a; protected String b; String c; private String d; public Person(String name, int age) { this.name = name; this.age = age; } public Person() { } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person{" + "name='" + name + '\'' + ", age=" + age + ", a='" + a + '\'' + ", b='" + b + '\'' + ", c='" + c + '\'' + ", d='" + d + '\'' + '}'; } public void eat(){ System.out.println("eat..."); } public void eat(String food){ System.out.println("eat..."+food); } } 

测试

package cn.reflect; import cn.domain.Person; import java.lang.reflect.Constructor; import java.lang.reflect.Method; public class ReflectDemo4 { /**
     *Class对象功能:

           *获取功能:

            1.获取成员变量们

                *Field[]  getFields()
                *Field    getField(String name)

                *Field[]  getDeclaredFields()
                *Field    getDeclaredField(String name)

            2.获取构造方法们

                  *Constructor<?>[]   getConstructors()
                  *Constructor<T>     getConstructor(类<?>...   parameterTypes)

                  *Constructor<?>[]   getDeclaredConstructors()
                  *Constructor<T>     getDeclaredConstructor(类<?>...   parameterTypes)

            3.获取成员方法们

                  *Method[]    getMethods()
                  *Method      getMethod(String name,类<?>...  parameterTypes)

                  *Method[]    getDeclaredMethods()
                  *Method      getDeclaredMethod(String name,类<?>...  parameterTypes)

           4.获取类名

                  *String getName()
     */ public static void main(String[] args) throws Exception { //0.获取Person的Class对象 Class personClass = Person.class; /*
            1.获取成员方法们

                  *Method[]    getMethods()
                  *Method      getMethod(String name,类<?>...  parameterTypes)

                  *Method[]    getDeclaredMethods()
                  *Method      getDeclaredMethod(String name,类<?>...  parameterTypes)
         */ //获取指定名称的方法 Method eat_method = personClass.getMethod("eat"); Person p = new Person(); //执行方法 eat_method.invoke(p); //获取指定名称的方法 Method eat_method2 = personClass.getMethod("eat", String.class); //执行方法 eat_method2.invoke(p,"螺蛳粉"); System.out.println("------------------------------"); //获取所有public修饰的方法 Method[] methods = personClass.getMethods(); for (Method method : methods) { System.out.println(method); //包含Object类的方法 String name = method.getName(); System.out.println(name); //            method.setAccessible(true); } //4.获取类名  String getName() String className = personClass.getName(); System.out.println(className); //cn.domain.Person } } 

打印结果:
利用反射获取Class对象功能的Method

本文地址:https://blog.csdn.net/weiyoo55/article/details/107889971

相关标签: 反射 获取Method