【发布时间】:2019-04-18 14:18:21
【问题描述】:
我想通过 Jackson 解析 YAML 文件,但遇到的问题是其中一个属性(我们称之为“事件”)有一个名为“类型”的字符串和一个“属性”对象,该对象因不同的事件而不同。我的问题是我需要为此 YAML 定义 POJO。因此,我想定义一个带有 VariableObject 的 Hashmap,它可以是任何一些预定义的类(为简洁起见,假设为 Shipping 和 Inventory)。
如何实现这样的 Hashmap?
public class Event {
private static String type;
private static Map<String, VariableObject> properties;
public static void main(String[] args) {
Inventory inventory = new Inventory("inventoryName", 13);
properties.put("Inventory", inventory);
Shipping shipping = new Shipping("shippingName", true);
properties.put("Shipping", shipping);
}
}
public class Inventory {
private static String name;
private static int someNumber;
public Inventory(String name, int someNumber) {
this.name = name;
this.someNumber = someNumber;
}
}
public class Shipping {
private static String name;
private static boolean someBoolean;
public Shipping(String name, boolean someBoolean) {
this.name = name;
this.someBoolean = someBoolean;
}
}
【问题讨论】:
-
您应该使用公共接口或超类,即
Inventory implements VariableObject或Inventory extends VariableObject(因为两者都有可能是公共超类VariableObject的一部分的name属性,因此应该是Inventory extends VariableObject)。
标签: java dictionary oop generics jvm