java如何获取t中的方法

java如何获取t中的方法

作者:Elara发布时间:2026-02-13阅读时长:0 分钟阅读次数:6

用户关注问题

Q
如何通过Java代码获取某个类中的所有方法?

我想获取Java中某个类的所有方法,应该怎么做?有没有相关的API可以直接获取方法列表?

A

使用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());
}

Q
如何通过泛型类型参数获取对应类的方法?

我有一个泛型T,怎么在Java中获取类型T所表示的类的所有方法?

A

通过类型参数获取Class对象并反射获取方法

泛型在运行时会进行类型擦除,因此不能直接通过T获取Class信息。需要通过在类中传入Class的方式来保存类型信息。例如:

public class MyClass {
private Class clazz;
public MyClass(Class clazz) {
this.clazz = clazz;
}

public Method[] getMethods() {
    return clazz.getDeclaredMethods();
}

}
这样就可以通过传入类的Class对象来访问其方法。

Q
如何区分Java反射获取的方法是私有还是公共?

用反射获得方法后,怎样判断方法的访问权限是私有还是公共?

A

利用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() + " 是私有方法");
}
}