您的位置:首页 > 财经 > 金融 > java反射获取方法参数名、参数类型

java反射获取方法参数名、参数类型

2025/4/2 23:35:43 来源:https://blog.csdn.net/m0_49128301/article/details/141905138  浏览:    关键词:java反射获取方法参数名、参数类型
package com.hx.utils;import com.hx.bean.Student;
import org.springframework.core.LocalVariableTableParameterNameDiscoverer;import java.lang.reflect.*;/*** 反射应用*/
public class MyReflect {public static void main(String[] args) {
//        cancelAccess();getMethodInfo();}public static void getMethodInfo() {try {Class<?> cls = Class.forName("com.hx.bean.Student");Field[] fields = cls.getFields();//只能获取公有的成员变量for (int i = 0; i < fields.length; i++) {System.out.println("获取到公有的成员变量:" + fields[i].getName());}System.out.println("************以下是获取方法的参数名、参数类型");Method[] methods = cls.getMethods();for (Method method : methods) {String methodName = method.getName();if (!"add".equals(methodName)) {continue;}Parameter[] parameters = method.getParameters();for (int i = 0; i < parameters.length; i++) {String name = parameters[i].getType().getName();System.out.println(methodName + "的第" + (i + 1) + "个入参名为:" + parameters[i].getName() + " 参数类型为:" + name);}}} catch (ClassNotFoundException e) {throw new RuntimeException(e);}}public static void cancelAccess() {//通过反射创建对象try {Class studentClass = Student.class;Constructor c = studentClass.getConstructor(String.class, String.class, int.class);Object obj = c.newInstance("小明", "1001", 18);//通过属性名获取field对象Field f = studentClass.getDeclaredField("name");//取消属性访问权限控制
//            f.setAccessible(true);//获取更改前name的值System.out.println("更改前:" + f.get(obj));System.out.println(obj);f.set(obj, "小刚");System.out.println("更改后:" + f.get(obj));System.out.println(obj);} catch (Exception e) {throw new RuntimeException(e);}}}

返回结果

获取到公有的成员变量:sex
获取到公有的成员变量:age
************以下是获取方法的参数名、参数类型
add的第1个入参名为:x 参数类型为:int
add的第2个入参名为:y 参数类型为:intProcess finished with exit code 0

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com