Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何列出Java类的所有实例方法?_Java_Jruby - Fatal编程技术网

如何列出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

我想列出Java程序中
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())