package unit4;
import java.lang.Class;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
import java.lang.reflect.Constructor;
public class Java35 extends Object {
public static void main(String[] args) throws ClassNotFoundException {
// Java反射API(高级API:因为它是开发技术的技术)
// 理解:反射是一种看透java代码的能力实现。
// 说明:反射这套API只要知道了类的具体位置、就能看透类中所有代码、还能执行所有代码、框架底层都是反射API实现。
// java.lang.Class ??????????????类
// java.lang.reflect.Field ??????成员变量
// java.lang.reflect.Method ?????成员方法
// java.lang.reflect.Constructor 构造方法
// 获取类对象
Class c = Class.forName("unit4.Company");
System.out.println(c.getName());
ClassLoader classLoader = c.getClassLoader();
System.out.println(classLoader); // AppClassLoader
System.out.println(classLoader.getParent());// ExtClassLoader ext
System.out.println(classLoader.getParent().getParent());// null 不存在、java应用程序获取不到 rt.jar
// ???????// 获取成员变量
// ???????for (Field f : c.getDeclaredFields()) {
// ???????????System.out.println(f.getName());
// ???????}
// ???????// 获取成员方法
// ???????for (Method m : c.getDeclaredMethods()) {
// ???????????System.out.println(m.getName());
// ???????}
// ???????// 获取构造方法
// ???????for (Constructor con : c.getDeclaredConstructors()) {
// ???????????System.out.println(con.getName());
// ???????}
// ???????// 获取父类
// ???????Class ff = c.getSuperclass();
// ???????System.out.println(ff.getName());
// ???????// 获取接口
// ???????for (Class anInterface : c.getInterfaces()) {
// ???????????System.out.println(anInterface.getName());
// ???????}
}
}
class FF {
}
interface K {
}
interface S {
}
class Company extends FF implements K, S{
String name;
public Company() {
}
public Company(String name) {
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "Company{" +
"name='" + name + '\'' +
'}';
}
}