package reflect;
import java.lang.reflect.Constructor;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
public class Apple extends Fruits {
public Apple() {
System.out.println("Constructor: Apple");
}
@Override
void getFruitColor() {
super.getFruitColor();
System.out.println("RED");
}
@Override
void getFruitName() {
super.getFruitName();
System.out.println("Apple");
}
}
class doReflect{
public static void main(String[] args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, IllegalAccessException, InstantiationException {
// 1.获取类
Class<?> clazz = Class.forName("reflect.Apple");
System.out.println("获取类:"+clazz);
// 2.获取构造
Constructor constructor = clazz.getConstructor();
System.out.println("获取构造:"+constructor);
// 3.获取方法
Object bean = clazz.newInstance(); // 必须实例化
System.out.println(bean.toString());
// 3.1 获取声明方法
Method[] methods = bean.getClass().getDeclaredMethods();
System.out.println("---------getDeclaredMethods");
for (Method m : methods) {
System.out.println(m);
}
// void reflect.Apple.getFruitColor()
// void reflect.Apple.getFruitName()
// 3.2 获取方法
Method[] methods2 = bean.getClass().getMethods();
System.out.println("---------getMethods");
for (Method m : methods2) {
System.out.println(m);
}
// ---------getMethods
// public final void java.lang.Object.wait() throws java.lang.InterruptedException
// public final void java.lang.Object.wait(long,int) throws java.lang.InterruptedException
// public final native void java.lang.Object.wait(long) throws java.lang.InterruptedException
// public boolean java.lang.Object.equals(java.lang.Object)
// public java.lang.String java.lang.Object.toString()
// public native int java.lang.Object.hashCode()
// public final native java.lang.Class java.lang.Object.getClass()
// public final native void java.lang.Object.notify()
// public final native void java.lang.Object.notifyAll()
// 3.3 调用方法
Method method = bean.getClass().getDeclaredMethod("getFruitColor");
System.out.println("调用方法:");
method.invoke(bean);
}
}