如何使用不同的对象作为值来实现 Java Hashmap

我想通过 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;

    }

}


蝴蝶刀刀
浏览 124回答 2
2回答

ABOUTYOU

你说的很简单Object。它是最具体的常见超类:private&nbsp;static&nbsp;Map<String,&nbsp;Object>&nbsp;properties;其他解决方案是制作Inventory和Shipping实现一些通用接口,例如Named并将其用作HashMap.

RISEBY

一种方法是制作Shipping和Inventory实现相同的接口(如VariableObject在您的 cas 中)public class Event {&nbsp; &nbsp; private static String type;&nbsp; &nbsp; private static Map<String, VariableObject> properties;&nbsp; &nbsp; public static void main(String[] args) {&nbsp; &nbsp; &nbsp; &nbsp; Inventory inventory = new Inventory("inventoryName", 13);&nbsp; &nbsp; &nbsp; &nbsp; properties.put("Inventory", inventory);&nbsp; &nbsp; &nbsp; &nbsp; Shipping shipping = new Shipping("shippingName", true);&nbsp; &nbsp; &nbsp; &nbsp; properties.put("Shipping", shipping);&nbsp; &nbsp; }}public interface VariableObject{//you can define common methods here if you want}public class Inventory implements VariableObject{&nbsp; &nbsp; private static String name;&nbsp; &nbsp; private static int someNumber;&nbsp; &nbsp; public Inventory(String name, int someNumber) {&nbsp; &nbsp; &nbsp; &nbsp; this.name = name;&nbsp; &nbsp; &nbsp; &nbsp; this.someNumber = someNumber;&nbsp; &nbsp; }}public class Shipping implements VariableObject{&nbsp; &nbsp; private static String name;&nbsp; &nbsp; private static boolean someBoolean;&nbsp; &nbsp; public Shipping(String name, boolean someBoolean) {&nbsp; &nbsp; &nbsp; &nbsp; this.name = name;&nbsp; &nbsp; &nbsp; &nbsp; this.someBoolean = someBoolean;&nbsp; &nbsp; }}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java