Java-使用注释/标记查找要创建的对象
假设您有一个名为Human的类,还有一堆其他类都扩展了Human(John、Sally、Mark)。Human有注释“@Tags({“Human”})”,John有注释“@Tags({“John”})”等等。。所有类都有相应的标记 我的问题是:如何使用这些标记来确定要创建哪个对象 因此,用户将输入“john”、“sally”或“mark”,我想创建相应的对象…查看: 一种软件设计模式,可以在运行时选择算法的行为 您可以使用此模式将输入匹配到工厂,或者作为将名称映射到给定类类型的Java-使用注释/标记查找要创建的对象,java,object,tags,annotations,Java,Object,Tags,Annotations,假设您有一个名为Human的类,还有一堆其他类都扩展了Human(John、Sally、Mark)。Human有注释“@Tags({“Human”})”,John有注释“@Tags({“John”})”等等。。所有类都有相应的标记 我的问题是:如何使用这些标记来确定要创建哪个对象 因此,用户将输入“john”、“sally”或“mark”,我想创建相应的对象…查看: 一种软件设计模式,可以在运行时选择算法的行为 您可以使用此模式将输入匹配到工厂,或者作为将名称映射到给定类类型的enum的一部分(
enum
的一部分(尽管这种方法存在几个“硬编码”问题)
至于对象实例的构造,我建议您也看看,并将两者结合起来,以抽象的方式创建这些对象
我还建议您不要像这样标记对象,因为您正在根据代码库硬编码用户输入期望。至少将这些期望外部化到配置文件(
.properties
或.xml
)中,这样输入的映射可以独立于代码进行更改。我在一个项目中遇到过类似的要求
这就是我所做的
要了解有关factory模式的更多信息,请参阅链接:注释是否必不可少?对我来说,它们似乎是硬编码,或者这个例子是故意隐藏细节/组织/等等?