LinkedHashSet在底层数据存储区获取Java中作为HashSet返回

问题描述 投票:0回答:1

该参数声明如下,

@Persistent private Set<ScopeType> scope = new LinkedHashSet<ScopeType>();

虽然通过高级数据存储区访存进行抓取,但它以LinkedHashSet进行响应,但是在低级访存时,响应为HashSet,这是预期的吗?

java jdo linkedhashset
1个回答
0
投票

这看起来很合理。 scope的类型是Set,而不是LinkedHashSetHashSet。这些是实现类型。 scope的任何用户只能保证满足声明的类型,而不保证正在使用特定的实现。

如果必须保持LinkedHashSet的顺序保留功能,则必须将scope声明为LinkedHashSet

将具体类型用作声明的类型会破坏大多数样式规则,但在这种情况下是不可避免的。没有类似于Set的接口可以使用。这是Java输入的限制的结果。

© www.soinside.com 2019 - 2024. All rights reserved.