【问题标题】:List of methods inside class in Java [closed]Java中类内的方法列表[关闭]
【发布时间】:2013-10-17 05:23:25
【问题描述】:

如何获取我在 java 中的 Class 中拥有的所有 Methods() 的列表(名称)?

例如

public class helloworld {
     public static void main() {
         ...
     }

     public static void method() {
         ...
     }

     public static void anothermethod() {
         ...
     }
}

结果是:

method
anothermethod

有可能吗?提前致谢。

【问题讨论】:

  • Reflection 会为你做到这一点。
  • 是的,有可能,搜索反射。
  • 请不要helloworld,而是HelloWorld。不是anothermethod,而是anotherMethod()。遵循 Java 命名约定。
  • 扩展 Zavior 之前所说的内容:this 文档链接。
  • 你看过 java.lang.Class 的规范了吗??

标签: java class methods


【解决方案1】:

您需要使用反射。 Class#getDeclaredMethods() 就是你要找的。​​p>

public void showMethods(Object obj) {
    if (obj != null) {
        Method[] methods = obj.getClass().getDeclaredMethods();
        for (Method method : methods) {
            System.out.println(method.getName());
        }
    }
}

如果您只需要打印方法名称列表;最好先将其添加到Set。这只会打印一次重载的方法。如果您想打印方法名称和参数信息,请查看Method#getParameterTypes()

【讨论】:

  • 虽然这是答案,但您只是在帮助 OP 成为一个僵尸编码器,它会要求一切,而不是在网上轻松搜索。
  • @LuiggiMendoza 这是一个引起广泛争论的话题,但我们的想法是当人们进行网络搜索时,我们希望 SO 成为目的地,因此人们提出关于 SO 的问题实际上是合理的即使在其他地方很容易找到。无论如何,如果这已经重复了 SO 上的现有问题,那么请将其标记为欺骗。
  • @LuiggiMendoza 我更喜欢称他们为vampires :-)
  • 只是想知道,我必须在 showMethods() 中接收什么参数?正如我所见,我是 Java 新手
  • @Alexandre 我可能有点不清楚。无论您对 java 了解多少,都应始终避免反射。 JVM 失去了进行优化的能力,并且很多保证都被抛到了窗外。只有当你有充分的理由时才应该使用它。如果您只是测试语言,则另当别论。了解反射是什么、如何避免以及何时真正应该使用它是很好的。
猜你喜欢
  • 2012-12-24
  • 2016-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 2013-05-24
  • 1970-01-01
相关资源
最近更新 更多