
java如何获取t中的方法
用户关注问题
我想获取Java中某个类的所有方法,应该怎么做?有没有相关的API可以直接获取方法列表?
使用Java反射API获取类的方法
可以通过Java反射机制的Class类中的getDeclaredMethods()或getMethods()方法来获取类中的方法。getDeclaredMethods()会返回类自己声明的所有方法(包括私有方法),而getMethods()则会返回类及其父类的所有公共方法。示例代码:
Class<?> clazz = YourClass.class;
Method[] methods = clazz.getDeclaredMethods();
for (Method method : methods) {
System.out.println(method.getName());
}
我有一个泛型T,怎么在Java中获取类型T所表示的类的所有方法?
通过类型参数获取Class对象并反射获取方法
泛型在运行时会进行类型擦除,因此不能直接通过T获取Class信息。需要通过在类中传入Class的方式来保存类型信息。例如:
public class MyClass {
private Class clazz;
public MyClass(Class clazz) {
this.clazz = clazz;
}
public Method[] getMethods() {
return clazz.getDeclaredMethods();
}
}
这样就可以通过传入类的Class对象来访问其方法。
用反射获得方法后,怎样判断方法的访问权限是私有还是公共?
利用Method对象的修饰符判断访问权限
Method类提供了getModifiers()方法来获取方法的访问修饰符,返回一个整数值,可以用Modifier类的静态方法判断。示例代码:
for (Method method : methods) {
int modifiers = method.getModifiers();
if (Modifier.isPublic(modifiers)) {
System.out.println(method.getName() + " 是公共方法");
} else if (Modifier.isPrivate(modifiers)) {
System.out.println(method.getName() + " 是私有方法");
}
}