当前位置: 首页 > 知识库问答 >
问题:

Java-获取每个子类的实例

曹渝
2023-03-14

我有一个抽象类命令。构造函数如下所示:

public Command(String cmd, String helpMsg, String... args) {
    this.command = cmd;
    this.helpMsg = helpMsg;
    this.args = args;
}

每当满足某个条件时,我希望能够打印出每个命令,它是帮助消息和参数

如果我可以遍历Command子类的实例,我可以为这些属性调用getter函数。但是,我不知道如何存储这样的实例。我一直在阅读泛型,但还没能解决这个问题。

现在,我有另一个具有此代码的类:

private static Map<Class<? extends Command>, ? extends Command> instances;

public static <T extends Command> void addInstance(Class<T> tClass, T tInstance) {
    instances.put(tClass, tInstance);
}

但这给了我一个错误:

所需类型:捕获?extends命令

提供:T

如果我能够使用getInstance(subclass.class)获取单个子类的实例,那也很好

共有1个答案

王声
2023-03-14

如果您想确保类和对象的类型相同,您需要创建自己的映射类来强制执行它,或者使用现有的映射类,例如Guava的ClassToInstanceMap。

如果您只需在给定类的映射中放置和获取一个命令实例就足够了,那么我建议您简单地删除第二个通配符:

private static Map<Class<? extends Command>, Command> instances;

有很多很好的现有答案可以解释extends通配符的行为,以及为什么在尝试插入命令实例时会收到警告。我绝对建议给他们读一读:两者之间的区别

 类似资料:
  • 有一种方法可以找到类的所有命名子类,而不需要为(OWLClass子类:reasoner.GetSubclasses(clazz,true).GetFlatened())使用推理器

  • 问题内容: 在Java中,是否有任何可能的方法来获取某个类的所有实例? 问题答案: 实例化类(Singleton模式)时,可以使用Factory静态初始化程序,然后将工厂构造函数中的每个生成的实例添加到List中。 像这样的东西:

  • 问题内容: 我正在开发python应用程序,我想获取每个打开的窗口。我需要窗口的名称和来过滤列表,以管理一些特定的窗口,移动它们并调整其大小。 我试图自己查看信息,但没有获得正确的代码。我尝试使用此代码,但仅获得每个窗口的标题(很棒),但我也需要。 这里有一个错误: 问题答案: 你混了和。 在你所得到的是通过获得,是一个对象。这就是为什么不接受它。你应该把它传给 如果要使用,则可以直接使用pyth

  • 问题内容: 说我有一个具有一些成员变量的类,一个或多个是具有成员变量的另一个类。如何获得两个类中每个变量的值? 我可以通过以下方式获取变量:通过调用Foo对象的值,然后再次对其进行迭代以获取子类变量。 但是,如何在没有该类实例的情况下获取每个子类成员变量的值?我的平凡示例之所以有用,是因为该类的每个实例的变量都相同,因此我可以调用 我想如果能以某种方式从字段中获取对象的实例,那可能会起作用? 提前

  • 本文向大家介绍Python 实现子类获取父类的类成员方法,包括了Python 实现子类获取父类的类成员方法的使用技巧和注意事项,需要的朋友参考一下 大家好,今天在写代码的时候,遇到了这样一种情况。我有如下所示的几个类用来存放程序配置(其实当做命名空间来用,同时感觉能够继承方便一点), 然后我在子类中想要访问父类的类成员变量,而且这两个类都是只有类成员变量。感觉目前我使用的方法笨一点,就是直接引用父

  • 我试图在一个页面上显示来自两个类别的帖子(6) 我将如何将类别ID“7”添加到该代码中,以使所有内容都像上面解释的那样工作?提前谢谢!