我正在执行以下操作来建立TestA类的公共方法。
List<String> strings = new ArrayList<String>();
Method[] methods = TestA.class.getDeclaredMethods();
for(Method method : methods)
{
if(Modifier.isPublic(method.getModifiers()))
{
strings.add(method.getName());
}
}
我还需要为TestB
,TestC
等做同样的事情,所以我想要一个带有类名并返回公共方法的String数组的函数。我怎么能这样做?
如果我有一个Object参数,我必须在将它们发送给函数之前创建每个Class的实例。我希望避免这种情况。
答案 0 :(得分:7)
这听起来像你想要的:
public static List<String> getPublicDeclaredMethods(Class<?> clazz) {
List<String> strings = new ArrayList<String>();
Method[] methods = clazz.getDeclaredMethods();
for(Method method : methods) {
if(Modifier.isPublic(method.getModifiers())) {
strings.add(method.getName());
}
}
return strings;
}
然后用:
调用它List<String> names = getPublicDeclaredMethods(TestA.class);
您还应该考虑使用Class.getMethods
,它只返回公共方法 - 但返回从超类继承的方法。
答案 1 :(得分:1)
您可以自行传递java.lang.Class
个实例,如下所示
public void introspectClass(Class cls){
List<String> strings = new ArrayList<String>();
Method[] methods = cls.getDeclaredMethods();
for(Method method : methods)
{
if(Modifier.isPublic(method.getModifiers()))
{
strings.add(method.getName());
}
}
}