gpt4 book ai didi

java - 在 java 中,如何处理可以是 String 或 List 的对象?

转载 作者:行者123 更新时间:2023-12-01 07:37:53 27 4
gpt4 key购买 nike

Possible Duplicate:
Maps with multiple types of values in java

我有一个奇怪的问题。也许我的处理方式是错误的,但让我们看看这个问题的去向:)

我想要一个包含字符串或字符串列表的映射容器。我想在构造此对象期间强制执行此规则,以便您无法创建具有不属于其中任何一个值的映射。

例如

class Record {
public Record(String key, Map<String,Object> attrs) {
// check that attrs only contains Objects which are Strings or List<Strings>
}
}

我想到的解决问题的其他方法可能是......

1)

class Record {
public Record(String key, Map<String,String> attrs, Map<String,List<String>> multiAttrs) {
// ...
}
}

2)

class Record {
public Record(String key, Map<String,Value> attrs) {
// ...
}
}

class Value {
// Create some funky class that encapsulates lists.
// Perhaps returning the only element in the list if the size is 1,
// but returning the list otherwise
}

我并没有立即对替代方案感到兴奋,但我只是将其作为我已经考虑过的东西放在那里。我真的希望字符串和列表之间的区别对类的用户是透明的。

最佳答案

您考虑过ListMultimap ?对于单值情况,列表只有一个元素。 Multimap 允许将多个元素(值)映射到每个键。所以你的方法是:

public Record(String key, ListMultimap<String, String> attrs)...

此外,由于您的 Record 似乎是另一个映射,请考虑使用 Table它允许两键映射。

关于java - 在 java 中,如何处理可以是 String 或 List<String> 的对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9259997/

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