类中的非static方法我们需要使用实例化对象才能使用,那么反射又如何进行实例化对象呢?
使用反射实例化对象:使用Class 里的 newInstance()
方法
@CallerSensitive
public T newInstance() throws InstantiationException, IllegalAccessException
Food
package javabase.entity;
public class Food {
public Food(){
System.out.println("====又一餐美味的享受====");
}
public void doit(){
System.out.println("====>做一顿好吃的给你");
}
@Override
public String toString() {
return "这是一盘美味的食物";
}
}
Main
package javabase;
public class Main {
public static void main(String[] args) {
Class clazz = null;
try {
//使用Class.forname实例化Class需要输入全类名【包.类】
clazz = Class.forName("javabase.entity.Food");
//实例化,只有实例化才能调用非static方法
//newInstance依旧使用无参构造方法
Object food = clazz.newInstance();
System.out.println(food.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
}
执行结果
====又一餐美味的享受====
这是一盘美味的食物