【问题标题】:Using reflection to get a list of all classes that extend a "Solid" class使用反射获取扩展“Solid”类的所有类的列表
【发布时间】:2013-09-03 01:27:25
【问题描述】:

我知道如何使用反射确定一个类的超类。因此,如果我有一个游戏,并且我有一个地图编辑器,并且我希望它有一个带有按钮的面板来选择可以添加到游戏中的任何类型的 Solid 并添加它,理论上我可以使用反射来查看通过我游戏中的所有类,查看哪些具有超类“Solid”,然后在面板中添加一个按钮。唯一阻止我这样做的是我需要一个所有类的列表来搜索,有没有办法可以得到它?

【问题讨论】:

  • 这个想法是你可以编写扩展Solid的插件并将它们添加到程序中?
  • 看看here.
  • @chrylis 你知道当你使用代码“Main.class”时,它返回一个Class?我想要一个包含我在代码中定义的所有类的 Class[]。

标签: java reflection


【解决方案1】:

您可能想要 Java Service Provider Interface。它通过让您在 jar 清单中列出实现的“插件”(提供程序)类来解决这个问题。然后您使用ServiceLoader 请求所有可用的实现,您只需使用Class.forNameHere's another useful overview.

【讨论】:

  • 谢谢,我正在调查这个。如果我让它工作,我会标记为答案。一些简单的示例代码会非常好,我会给予 1up。
  • 看看ServiceLoader 上的文档。对于实现你的接口的所有类,你只需要ServiceLoader.load(MyInterface.class).iterator()
猜你喜欢
  • 2017-02-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多