一个小小的Demo, 对Class不理解的去看看慕课网的反射
package com.reflect; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.Method; public class Test { /** * Class 所有类的类类型 * getMethods 取public方法 * getDeclaredMethods() 取自身的所有方法包括(private 等) * @param args */ public static void main(String[] args) { Class c = Student.class; //构造函数 Constructor [] cons = c.getConstructors(); for (Constructor constructor : cons) { Class[] params = constructor.getParameterTypes(); System.out.print(constructor.getName()+"("); for (int i = 0; i < params.length; i++) { System.out.print(params[i].getName()+","); } System.out.println(")"); } System.out.println("==================================="); //方法 Method[] m = c.getMethods(); for (Method method : m) { Class[] params = method.getParameterTypes(); System.out.print(method.getReturnType().getName() + " " +method.getName()+"("); for (int i = 0; i < params.length; i++) { System.out.print(params[i].getName()+","); } System.out.println(")"); } System.out.println("==================================="); //字段 Field[] f = c.getDeclaredFields(); for (Field field : f) { System.out.println(field.getType().getName() + " " +field.getName()); } try { //单个方法的调用 Student s = new Student(); Method method = c.getMethod("sayHello", new Class[]{}); method.invoke(s); //单个字段的取值 请看下面的Field使用,个人觉得写的不错 } catch (Exception e) { e.printStackTrace(); } } }

package com.reflect; public class Student { private String name; private Integer age; public Student(){} public Student(String name, Integer age){ this.name = name; this.age = age; } public void sayHello(){ System.out.println("hello."); } private void sayGood(){ System.out.println("good."); } public String getName() { return name; } public void setName(String name) { this.name = name; } public Integer getAge() { return age; } public void setAge(Integer age) { this.age = age; } }
Field 使用: 转载 http://www.cnblogs.com/manuosex/p/3852716.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)