java反射获得方法名后怎样判断方法是否含有参数

java反射获得方法名后怎样判断方法是否含有参数,第1张

public static void printMethods(Class cl)

{

Method[] methods =clgetDeclaredMethods();//返回一个包含方法对象的数组

for(Method m : methods)//循环该类的每个方法

{

Class retType = mgetReturnType();//该方法的返回类型,

Sting name = mgetName();//获得方法名

Systenoutprint(" "+ModifiertoString(mgetModifiers());打印方法修饰符

Systemoutprint(" "+retTypegetName() + " " + name +"(");

Class[] paramTypes = mgetParameterTypes();//获得一个方法参数数组(getparameterTypes用于返回一个描述参数类型的Class对象数组)

for(int j = 0 ; j < paramTypeslength ; j++)

{

if ( j > 0 ) Systemoutprint(" , "); //如果有多个参数,中间则用逗号隔开,否则直接打印参数

Systemoutprint (paramTypes[ j ]getName);

}

Systemoutprintln (" );");

}}

//////////getparameterTypes方法用于返回一个描述参数类型的Class对象数组)

获取set方法的时候getMethod("set", parameterTypes),后面传的parameterTypes不就是参数的Class吗,传String class,得到的set方法参数就是String类型嘛。前提是一定要有set(String arg)方法。

为什么不行呢 不知道你想要什么效果

给你另外一种参考 不知道是否适合你的项目

try {

PropertyDescriptor[] props = IntrospectorgetBeanInfo(tgetClass())getPropertyDescriptors();

if (props != null) {

for (int i = 0; i < propslength; i++) {

Systemoutprintln(props[i]getDisplayName());

if(props[i]getDisplayName()equals("deleteFlag")){

props[i]getWriteMethod()invoke(t, true);

}

}

}

} catch (Exception e) {

eprintStackTrace();

}

post 请求获取body内容

注意:>

今天在程序开发中想利用反射技术动态执行类的方法,开始一些方法的动态执行都没什么问题。可程序中有些重载方法需要传入ref或者out参数类型,此时发现反射方法能正确执行,可执行的结果确不能在ref或out的参数中体现,参数的值还是方法动态执行

request肯定会传过来一个方法名,假定叫methodName,你的servlet类假定叫MyServlet,然后执行

try {

Method method = MyServletclassgetDeclaredMethod(methodName,方法参数类型);

Object value = methodinvoke(new MyServlet(), 参数);

} catch (SecurityException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

} catch (NoSuchMethodException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

} catch (IllegalArgumentException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

} catch (IllegalAccessException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

} catch (InvocationTargetException e) {

// TODO 自动生成 catch 块

eprintStackTrace();

}

你的参数最好用Integer类型,这样上面的参数类型改为Integerclass,参数改为你的参数id,参数如果是request传过来的先转换为整型

调用哪个方法是你request传过来的方法名决定的

比如你调用的方法为update(Integer id,String name){}那么request中传来的方法名为update,

Method method =MyServletclassgetDeclaredMethod(methodName,Integerclass,Stringclass);

Object value = methodinvoke(new MyServlet(), 1,"aaa");

以上就是关于java反射获得方法名后怎样判断方法是否含有参数全部的内容,包括:java反射获得方法名后怎样判断方法是否含有参数、java取不同方法参数类型并相应传入对应类型参数、反射getMethod 传入的参数类型 不确定等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/9296166.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-26
下一篇2023-04-26

发表评论

登录后才能评论

评论列表(0条)

    保存