假设我有:
abstract class A{
public void init(String name){
//do whatever
}
}
然后我们有:
class B extends A{
public void init(String name,String lastName){
super.init(name);
//do whatever
}
}
我想得到B类的参数类型,但是当我这样做时:
Class clazz= classLoader.loadClass("B");
for (Method m : clazz.getDeclaredMethods())
{
if(m.getName().equals("init")){
Class<?>[] parameters = m.getParameterTypes();
for(Class<?> param : parameters){
print(param.getSimpleName())
}
}
}
我得到3个参数,B类和A类......(??) 我想得到的只是B类的参数类型。
有没有办法不查询超类?
答案 0 :(得分:0)
来自JavaDoc of Class.getDeclaredMethods()
:
返回一个数组,其中包含反映此Class对象所代表的类或接口的所有声明方法的Method对象,包括public,protected,default(包)访问和私有方法,但不包括继承方法
这正是我在执行代码时遇到的问题。所以我怀疑你的迭代还包括继承的方法。请再次检查/调试。