为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2022-10-12 15:41:08
我想通过 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;    }}
查看完整描述

2 回答

?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

你说的很简单Object。它是最具体的常见超类:

private static Map<String, Object> properties;

其他解决方案是制作InventoryShipping实现一些通用接口,例如Named并将其用作HashMap.


查看完整回答
反对 回复 2022-10-12
?
RISEBY

TA贡献1856条经验 获得超5个赞

一种方法是制作Shipping和Inventory实现相同的接口(如VariableObject在您的 cas 中)


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 interface VariableObject{

//you can define common methods here if you want

}



public class Inventory implements VariableObject{


    private static String name;

    private static int someNumber;


    public Inventory(String name, int someNumber) {

        this.name = name;

        this.someNumber = someNumber;

    }

}



public class Shipping implements VariableObject{


    private static String name;

    private static boolean someBoolean;


    public Shipping(String name, boolean someBoolean) {

        this.name = name;

        this.someBoolean = someBoolean;

    }

}


查看完整回答
反对 回复 2022-10-12
  • 2 回答
  • 0 关注
  • 123 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号