当前位置: 首页>后端>正文

Java语言的反射机制

Java语言的反射机制,第1张

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 + '\'' +

'}';

}

}


https://www.xamrdz.com/backend/3hk1941442.html

相关文章: