类运行时的对象
类运行时的对象
获取运行时类的完整结构 通过反射获取运行时类的完整结构 Field、Method、Constructor、Superclass、Interface、Annotation
-
实现的全部接口
-
-
全部的构造器
-
全部的方法
-
全部的Field
-
注解
-
...
package com.hua.reflection; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; //获得类的信息 public class Test08 { public static void main(String[] args) throws ClassNotFoundException, NoSuchFieldException, NoSuchMethodException { Class c1 = Class.forName("com.hua.reflection.User"); //获得类的名字 System.out.println(c1.getName());//获得包名+类名 System.out.println(c1.getSimpleName());//获得类名 //获得类的属性 Field[] fields = c1.getFields();//只能找到public属性 fields = c1.getDeclaredFields();//找到全部的属性 for (Field field:fields) { System.out.println(field); } //获得指定属性的值 Field name = c1.getDeclaredField("name"); System.out.println(name); //获得类的方法 System.out.println("==============================="); Method[] methods = c1.getMethods();//获得本类及父类的所有方法 for (Method method:methods){ System.out.println("正常的:"+method); } methods = c1.getDeclaredMethods();//获得本类的所有方法 for (Method method:methods){ System.out.println("getDeclaredMethods:"+method); } //获得指定的方法 //由于重载的存在,所以后面需要参数 Method getName = c1.getMethod("getName", null); Method setName = c1.getMethod("setName", String.class); System.out.println(getName); System.out.println(setName); //获得构造器 System.out.println("==============================="); Constructor[] constructors = c1.getConstructors(); for (Constructor constructor:constructors){ System.out.println(constructor); } constructors = c1.getDeclaredConstructors(); for (Constructor constructor:constructors){ System.out.println(constructor); } //获得指定的构造器 Constructor declaredConstructor = c1.getDeclaredConstructor(String.class,int.class,int.class); System.out.println(declaredConstructor); } }
小结
-
在实际的操作中,取得类的信息的操作代码,并不会经常开发
-
一定要熟悉java.lang.reflect包的作用,反射机制
-
如何取得属性、方法、构造器的名称、修饰符等
我的一生
第1章-废物的一生
第50章-糟糕的婴儿
第300章-莫欺少年穷
第600章-莫欺中年穷
第1000章-莫欺老年穷
第1100章-不详的离去
第1101章-棺材板的震动
第1150章-盗墓贼的眼泪
第1200章-死者为大
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义