反射获取字节码Class对象的三种方式、反射_Class对象功能概述
反射获取字节码Class对象的三种方式
* *Field[] getFields() :获取所以public修饰的成员变量
* Field getField( string name):获取指定public的成员变量
* Field[] getDeclaredFields() :获取所以的成员变量
* Field getDeclaredField(string name) ;获取单个的
* setAccessible :暴力反射
public static void main(String[] args) throws Exception {
Class<Student> aClass = Student.class;
/**
* * *Field[] getFields()
* * Field getField( string name)
* * Field[] getDeclaredFields()
* * Field getDeclaredField(string name)
*/
Field[] fields = aClass.getFields();
for (Field field : fields) {
System.out.println(field);
}
System.out.println("-------------");
Field a = aClass.getField("a");
Student student = new Student();
Object o = a.get(student);
System.out.println(o);
a.set(student, "大傻");
System.out.println(student);
System.out.println("------------------");
for (Field field : aClass.getDeclaredFields()) {
System.out.println(field);
}
System.out.println("-------------------");
Field d = aClass.getDeclaredField("d");
d.setAccessible(true); //暴力反射
Object o1 = d.get(student);
System.out.println(o1);
}
我们来看运行结果:
反射_Class对象功能概述
public class Test2 {
/**
* 获取构造方法们
* * 来constructor<? >[]getConstructors() :获取构造器
* * Constructor<T> getConstructor(类<?>... parameterTypes)
* * 末Cpnstructor<T> getDeclaredConstructor(类<?>. .. parameterTypes)*Constructor<?>[getDeclaredConstructors()
* * <p>
* @param args
*/
public static void main(String[] args) throws Exception {
Class<Student> aClass = Student.class;
Constructor<Student> constructor = aClass.getConstructor();
System.out.println(constructor);
Student student = constructor.newInstance(); //newInstance 创建对象
System.out.println(student);
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)