如何列出Java类的所有实例方法?
我想列出Java程序中如何列出Java类的所有实例方法?,java,jruby,Java,Jruby,我想列出Java程序中Vector类的所有实例方法。我想知道在Java中是否有与Ruby的instance\u方法等价的方法 如果有其他方法,请告诉我。如果我理解正确,您想从类中获取所有方法的列表吗 Class getMethodsFromClass = ob.getClass(); for (Method method : getMethodsFromClass.getDeclaredMethods()) { if (method.getAnnotation(PostConstruct.c
Vector
类的所有实例方法。我想知道在Java中是否有与Ruby的instance\u方法
等价的方法
如果有其他方法,请告诉我。如果我理解正确,您想从类中获取所有方法的列表吗
Class getMethodsFromClass = ob.getClass();
for (Method method : getMethodsFromClass.getDeclaredMethods()) {
if (method.getAnnotation(PostConstruct.class) != null) {
System.out.println(method.getName());
}
}
如果我理解正确,您希望从类中获取所有方法的列表吗
Class getMethodsFromClass = ob.getClass();
for (Method method : getMethodsFromClass.getDeclaredMethods()) {
if (method.getAnnotation(PostConstruct.class) != null) {
System.out.println(method.getName());
}
}
要获取类的所有公共非静态方法,包括从基类继承的方法,请执行以下操作:
for (Method method : Vector.class.getMethods())
if ((method.getModifiers() & Modifier.STATIC) == 0)
System.out.println(method);
输出(Java 1.8.0_65)
要获取类的所有公共非静态方法,包括从基类继承的方法,请执行以下操作:
for (Method method : Vector.class.getMethods())
if ((method.getModifiers() & Modifier.STATIC) == 0)
System.out.println(method);
输出(Java 1.8.0_65)
instance.getClass().getDeclaredMethods()
@nhaarman可能与之重复,因为OP需要的是非静态方法,而不是对象实例。@不返回从超类继承的方法的NeplatnyUdaj。此外,它还返回OP可能不需要的私有方法。@andreas当然。这只是开始OP的一个快速提示。instance.getClass().getDeclaredMethods()
@nhaarman可能与之重复,因为OP需要的是非静态方法,而不是对象实例。@NeplatnyUdaj不返回从超类继承的方法。此外,它还返回OP可能不需要的私有方法。@andreas当然。这只是一个快速开始行动的提示。不客气!如果您对解决方案感到满意,请随意接受这个答案。仅供参考:这也会返回私有和受保护的方法,而不会返回从基类继承的方法。与getMethods()
类似,它返回静态方法,因此需要将它们过滤掉,以符合OP所述的“实例方法”目标。^是的,这在这种特殊情况下的应用程序中很重要method@Andreas只需简单地执行method.getAnnotation(PostConstruct.class)!=空&!getName()方法包含(“静态”)代码>用于if条件。:)@SGM1不使用字符串比较排除静态
。有关检查静态
的正确方法,请参阅。欢迎使用!如果您对解决方案感到满意,请随意接受这个答案。仅供参考:这也会返回私有和受保护的方法,而不会返回从基类继承的方法。与getMethods()
类似,它返回静态方法,因此需要将它们过滤掉,以符合OP所述的“实例方法”目标。^是的,这在这种特殊情况下的应用程序中很重要method@Andreas只需简单地执行method.getAnnotation(PostConstruct.class)!=空&!getName()方法包含(“静态”)代码>用于if条件。:)@SGM1不使用字符串比较排除静态
。查看查看查看static
的正确方法。出于好奇,您会问,这种捕获方法是匿名类型的吗?@SGM1匿名类是真实的类,它只是没有名称。从技术上讲,它可以,但自动生成的名称不适合您使用。是的,您可以调用myAnonymousObj.getClass().getMethods()
。修饰符类中有一个静态帮助器方法来检查标志。呼叫!Modifier.isStatic(method.getModifiers())
出于好奇,问一下,这会捕获匿名类型中的方法吗?@SGM1匿名类是真实的类,它只是没有名称。从技术上讲,它可以,但自动生成的名称不适合您使用。是的,您可以调用myAnonymousObj.getClass().getMethods()
。修饰符类中有一个静态帮助器方法来检查标志。呼叫!Modifier.isStatic(method.getModifiers())