gpt4 book ai didi

java - 带有自定义值对象的映射

转载 作者:行者123 更新时间:2023-12-02 00:11:52 25 4
gpt4 key购买 nike

我想要一个 Map 对象来包含特定的值类型。

Map<String,Object> foo = new HashMap<String,Object>();
foo.put("1",new Integer(1));
foo.put("2", new String("hello"):
for (Map.Entry<Integer, Integer> entry : foo.entrySet()) {
if(entry.getValue() instanceof String) {
//do something
}
else if(entry.getValue() instanceof Double) {
//throw Exception
}
}

你可以看到我正在努力实现的目标。我需要在 Map 对象中使用特定的值类型,这样我就不必放置大量的 if/else 语句。我该如何实现这个目标?

最佳答案

如果您不喜欢拥有多个 map 的想法,您可以使用名为“覆盖”的优秀 OOP 功能。请参阅Override Methods了解更多信息。

我可能会使用组合模式来包装值类型,然后根据值类型为操作定义一个接口(interface)。

public abstract class ValueType {

public abstract void valueSpecificAction();
}

public class DoubleValueType extends ValueType {

private Double value;

public DoubleValueType(Double value) {
this.value = value;
}

public void valueSpecificAction() {
//do double specific actions
}
}

public class StringValueType extends ValueType {

private String value;


public void valueSpecificAction() {
//do string specific actions


}
}

然后,您可以在 map 中添加 ValueType 类型的对象。

Map<String,ValueType> foo = new HashMap<String,ValueType>();
foo.put("key1", new DoubleValueType(42.0));

稍后您可以获取类型为 ValueType 的值,并使用公共(public)方法 valueSpecificAction() 来根据特定类型执行操作。

关于java - 带有自定义值对象的映射,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12664688/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com