java反射通过method对象获取方法签名和修饰符:用getdeclaredmethods()获显式声明方法,getname()、getreturntype()等获取基本信息,modifier工具类解析修饰符,tostring()拼接人可读签名,getmethods()获取public继承方法,泛型信息需用getgenericxxx()。

Java 反射可以动态获取类中方法的签名(包括返回类型、参数类型、异常类型)和修饰符(如 public、static、final 等),核心是通过 Method 对象及其配套 API。
获取所有声明的方法(含 private)
使用 Class.getDeclaredMethods() 获取当前类**显式声明**的所有方法(不包含继承的),每个 Method 对象都封装了完整签名与访问标志。
-
method.getName()→ 方法名 -
method.getReturnType()→ 返回类型(Class对象) -
method.getParameterTypes()→ 参数类型数组(按声明顺序) -
method.getExceptionTypes()→ 声明抛出的异常类型数组 -
method.getModifiers()→ 修饰符整数值,需用Modifier工具类解析
解析修饰符:用 Modifier 工具类判断
method.getModifiers() 返回的是一个 int 值,它是多个修饰符常量的位或结果。不能直接打印数字,要用 java.lang.reflect.Modifier 的静态方法判断:
Java项目代码review工具。分析Git变更+完整调用链路上下文,推断业务需求,进行多维度评分和分类汇总,生成完整PRD文档。包含细粒度Java代码审查清单(Null安全、异常处理、Streams、并发、equals/hashCode、资源管理、API设计、性能、MyBatis/ORM、事务边界、SQL/DD...
-
Modifier.isPublic(m)、Modifier.isPrivate(m)、Modifier.isProtected(m) -
Modifier.isStatic(m)、Modifier.isFinal(m)、Modifier.isSynchronized(m) -
Modifier.toString(m)→ 直接返回修饰符字符串,如"public static final"(推荐用于日志或调试)
获取方法签名字符串(标准格式)
Java 不提供开箱即用的“完整签名字符串”,但可手动拼接,注意区分「签名」与「描述符」:
- 签名(人可读)示例:
public static void main(String[]) - 拼接逻辑:
Modifier.toString(m) + " " + m.getReturnType().getSimpleName() + " " + m.getName() + "(" + String.join(", ", Arrays.stream(m.getParameterTypes()).map(Class::getSimpleName).toArray(String[]::new)) + ")" - 若需 JVM 内部描述符(如
([Ljava/lang/String;)V),调用method.toGenericString()不适用,应使用Type.getType(method)(来自 ASM)或手动转换——但通常开发中用不到,toGenericString()更实用
注意继承方法与泛型信息
若需获取继承来的方法(如 toString()),改用 Class.getMethods(),但它只返回 public 方法(含父类/接口的);若需泛型返回类型或参数化类型(如 List<string></string>),应使用 getGenericReturnType() 和 getGenericParameterTypes(),它们返回 Type 子类型(如 ParameterizedType),可进一步提取实际类型参数。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南










