反射—Class对象功能_获取Constructor和获取Method

反射—Class对象功能_获取Constructor

获取构造方法们

  • Constructor<?>[] getConstructors():获取所有的构造方法
  • Constructor<T> getConstructor(类<?>... parameterTypes):获取指定的构造方法
  • Constructor<T> getDeclaredConstrutor(类<?>... parameterTypes)
  • Constructor<?> getDeclaredConstructors()

Constructor:构造方法

创建对象:

T newInstance(Object... initargs)

如果创建使用空参构造方法创建对象 操作可以简化:Class对象的newInstance方法

代码案例:

复制代码
public static void main(String[] args) throws Exception {
Class person=Person.class;
// Constructor<?>[] getConstructors()获取所有的构造方法
Constructor[] con = person.getConstructors();
for (Constructor constructor : con) {
System.out.println(constructor);
}
System.out.println("------------------------------");
// Constructor<T> getConstructor(类<?>... parameterTypes)//获取指定的构造方法
Constructor ct = person.getConstructor(String.class, int.class);
System.out.println(ct);
// 创建对象
Object obj = ct.newInstance("张三", 10);
System.out.println(obj);
System.out.println("------------------------------");
// Class对象的newInstance方法 只可以创建无参构造
Person person1 = Person.class.newInstance();
System.out.println(person1);
}
复制代码

Class对象获取Method

获取成员方法们

  • Method[] getMethods()
  • Method getMethod(String name,类<?>... parameterTypes)
  • Method[] getDeclaredMethods()
  • Method getDeckaredMethod(String name,类<?>... paramterTypes)

Method:方法

执行方法:

Object invoke(Object obj,Object... args)

获取方法名称:

String getName:获取方法名

代码:

复制代码
    获取成员方法们
Method[] getMethods()//获取所有的public方法
Method getMethod(String name,类<?>... parameterTypes)//获取指定的public方法
Method[] getDeclaredMethods()
Method getDeckaredMethod(String name,类<?>... paramterTypes)
*/
public class Demo1 {
public static void main(String[] args) throws Exception {
Class person = Person.class;
Method[] me = person.getMethods();
for (Method method : me) {
System.out.println(method);
}
System.out.println("---------------------");
Method eat = person.getMethod("eat");
System.out.println(eat);
Person p = new Person();
// Object invoke(Object obj,Object... args)执行方法
Object in = eat.invoke(p);
System.out.println(in);
System.out.println("---------------------");
Method[] me1 = person.getMethods();
for (Method method : me1) {
System.out.println(method);
// String getName:获取方法名
String name = method.getName();
System.out.println(name);
}
}
}
复制代码

运行结果:

posted @ 2022-10-20 15:35  想见玺1面  阅读(42)  评论(0编辑  收藏  举报