将方法作为参数传递给方法
我正在做下面的事来建立类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参数,我将不得不创建每个类的实例,然后再将它们发送给函数。我希望避免这种情况。
这听起来像你想:
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
只反正返回public方法 - 但返回从超继承的。
你觉得'>'是必要的吗?我想我们可以忽略它,只能写'Class'。它有什么区别? – 2013-02-27 12:20:45
@HarryJoy:是 - 'Class'是一个原始类型,它会导致编译时警告。 '类>'是一个使用通配符的通用类型,没有任何警告就没有问题。 – 2013-02-27 12:45:50
您可以通过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());
}
}
}
仅供参考,你可以有一个['Class'](http://docs.oracle.com/javase/7/docs/api/ java/lang/Class.html)作为方法的参数。 – 2013-02-27 12:16:41
您可以将'java.lang.Class'对象作为参数传递给方法。 – 2013-02-27 12:17:09
您是否需要班级超类的公共方法? – 2013-02-27 12:21:14