我想把一个字符串映射到一个构建特定对象的方法,但不一定要从同一个类为每个字符串映射。环顾四周,一个很好的解决方案是有一张地图
然后我有多个类,比如说
Object1Builder实现了ObjectBuilder
然后我可以这样构建我的地图:
stringToBuilder = new HashMap<String, ObjectBuilder>(){{
put(string1, Object1Builder);
put(string2, Object2Builder);
put(string3, Object3Builder);
}};
然后我可以执行
Object1 myObject1=stringToBuilder.get(string1)。
问题是,我得到一个错误
参数化类“ObjectBuilder”的原始使用
在IntelliJ中,当我实例化并构造
stringToBuilder
时,我知道这与在构造映射时没有指定接口ObjectBuilder
的泛型有关,但我不知道如何避免这种情况。此外,我对将这些类存储在映射中这一事实不是很满意,我希望我可以通过映射访问它们,而不必在映射中包含整个实例。
你可能已经注意到我对Java和这一切都很陌生,但是请确保我已经尽力了。提前谢谢你:)
如果没有明确的强制转换,你想要的东西永远不可能实现。原因是映射键(字符串)和值(ObjectBuilder)之间没有直接关系。
如果您可以从字符串切换到使用T
值作为映射键,这可以通过一些内部转换来完成。
首先,将地图声明为map
接下来,根据需要初始化它。我不喜欢使用带有初始值设定项的匿名类,所以我将使用
Map。属于
:
Map<Class<?>, ObjectBuilder<?>> classToBuilder = Map.of(
Object1.class, Object1Builder,
Object2.class, Object2Builder,
Object3.class, Object3Builder,
);
最后,我们需要一种方法来获取生成器:
@SuppressWarnings("unchecked")
private <T> getBuilder(Class<T> type) {
// Omitted: presence check
return (ObjectBuilder<T>) classToBuilder.get(type);
}
现在可以按如下方式使用:
Object1 object1 = getBuilder(Object1.class).buildObject();
我正在编写一个JSON接口/库,用于Bugzilla的webservice。 这可以使用注释或其他内容吗?还是要为每个这样的实例编写一个自定义反序列化程序? 我试着做了一些研究,发现了一些关于值实例化器或使用构造函数的信息,但使用构造函数不是反bean吗?我发现新特性的文档很少或难以理解。 示例: 我对一个字段使用pojo的原因是,这个用户类是由另一个具有更多字段的用户类扩展的。虽然我可以实现一个
我对编码非常陌生,刚刚接触过静态方法,所以我为这些愚蠢的错误提前道歉。在main下调用该方法时,该方法应该显示一个三角形,但我得到的控制台是空的,没有输出。但是,如果我将此写在main下: 然后,三角形将显示在控制台中,但是对于这个赋值,字符串/三角形必须仅通过使用来调用
本文向大家介绍PHP判断一个字符串是否是回文字符串的方法,包括了PHP判断一个字符串是否是回文字符串的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了PHP判断一个字符串是否是回文字符串的方法。分享给大家供大家参考。具体实现方法如下: 希望本文所述对大家的php程序设计有所帮助。
这个问题不难,我已经用自己的方法解决了,但我想听听你的意见,也许有什么方法可以让这成为一个改进的选择?Java 8-11。
问题内容: 我在寻找Python中的方法。 我想要做: 问题答案: 你可以使用in运算符:
问题内容: 我想创建一个地图,可以将其转换为json对象,例如 但是golang指定使用类型声明地图,因此我可以使用map [string] string或map [string] int。我如何创建上述的json对象? 注意:直到运行时或需要创建json对象时,我才知道需要哪些数据和/或类型。因此,我不能只创建像 问题答案: 您可以随时使用存储任何类型。如包装袋中的文件所述: 若要将JSON解组