我想使用类中的参数返回特定方法的名称。
我有一个程序也返回方法名称,但包括类名和包名。代码是:
import java.lang.reflect.*;
public class ClassDemo {
public static void main(String[] args) {
ClassDemo cls = new ClassDemo();
Class c = cls.getClass();
try {
// parameter type is null
Method m = c.getMethod("show", null);
System.out.println("method = " + m.toString());
}
catch(NoSuchMethodException e) {
System.out.println(e.toString());
}
try {
// method Long
Class[] cArg = new Class[1];
cArg[0] = Long.class;
Method lMethod = c.getMethod("showLong", cArg);
System.out.println("method = " + lMethod.toString());
}
catch(NoSuchMethodException e) {
System.out.println(e.toString());
}
}
public Integer show() {
return 1;
}
public void showLong(Long l) {
this.l = l;
}
long l = 78655;
}
结果是:
method = public java.lang.Integer ClassDemo.show()
method = public void ClassDemo.showLong(java.lang.Long)
我的问题是,我有什么方法可以获得方法名称及其相关参数,但没有类名和包名?
我的意思是在那种情况下结果将是:
method = show()
method = showLong(Long)
我看到问题Getting the name of the current executing method,但这不是我想要的。任何人都可以给我任何解决方案吗?
答案 0 :(得分:1)
System.out.print(m.getName() + "(");
Class<?>[] params = m.getParameterTypes();
for (int i = 0; i < params.length; i++) {
if (i > 0) {
System.out.print(", ");
}
System.out.print(params[i].getSimpleName());
}
System.out.println(")");
答案 1 :(得分:1)
获取方法名称:
System.out.println(method.getName());
获取方法参数类型名称:
Class<?>[] paramTypes = method.getParameterTypes();
for(Class<?> paramType : paramTypes) {
System.out.println(paramType.getSimpleName());
}
答案 2 :(得分:0)
我尝试编写一个方法,它将使用其参数返回每个方法:
public String getparameter(Method method){
String m = method.getName();
String str = "";
Class<?>[] params = method.getParameterTypes();
for (int i = 0; i < params.length; i++) {
if (i > 0) {
//System.out.print(", ");
}
str += m+"(" +params[i].getSimpleName()+ ")";
System.out.println(str);
}
return str;
}
但问题是,它只用一个pacameter返回方法。我怎样才能显示具有多个参数的方法??