反射—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);
}
}
}
运行结果: