【发布时间】:2017-04-09 15:52:09
【问题描述】:
我想创建一个Map<Long, Enum< ? extends SomeInterface>。哪个最适合我?
我试过这个
private Map<Long, Enum<? extends SomeInterface>[]> questionIdToanswersMapping = Collections.unmodifiableMap(Stream.of(
new SimpleEntry<>(QuestionEnum1.getQuestionId(), AnswerEnum1.values()),
new SimpleEntry<>(QuestionEnum2.getQuestionId(), AnswerEnum2.values()),
new SimpleEntry<>(QuestionEnum3.getQuestionId(), AnswerEnum3.values()),
new SimpleEntry<>(QuestionEnum4.getQuestionId(), AnswerEnum4.values()),
new SimpleEntry<>(QuestionEnum5.getQuestionId(), AnswerEnum5.values()))
.collect(Collectors.toMap((e) -> e.getKey(), (e) -> e.getValue())));
但它给出错误“无法从Map<Object,Object> 转换为Map<Long,Enum<? extends SomeEnum>[]>”。我是新来的。请帮忙!
我需要不可修改的问题 ID 映射到相应的可能答案值。可能的答案是枚举
可能的答案是这样包装的:
public class RecognizedAnswers {
public enum AnswerEnum1 implements SomeInterface;
public enum Answer2 implements SomeInterface;
}
【问题讨论】:
-
那么对于每个 QuestionId,都有相同的 AnswerEnum 集,它们有什么不同?
-
它们是不同的。每个 AnswerEnum 扩展 SomeEnum
-
但是总结不出来。在您的示例中,您有一组答案,根据描述,您需要将单个 QuestioId 映射到单个答案
-
我更新了问题。由于我在发布问题之前更改了变量名称,因此我错过了这一点。每个 AnswerEnum 扩展 SomeEnum
-
在 Java 中,我认为不可能扩展枚举
标签: java collections enums hashmap unmodifiable