该参数声明如下,
@Persistent private Set<ScopeType> scope = new LinkedHashSet<ScopeType>();
虽然通过高级数据存储区访存进行抓取,但它以LinkedHashSet进行响应,但是在低级访存时,响应为HashSet,这是预期的吗?
这看起来很合理。 scope
的类型是Set
,而不是LinkedHashSet
或HashSet
。这些是实现类型。 scope
的任何用户只能保证满足声明的类型,而不保证正在使用特定的实现。
如果必须保持LinkedHashSet
的顺序保留功能,则必须将scope
声明为LinkedHashSet
。
将具体类型用作声明的类型会破坏大多数样式规则,但在这种情况下是不可避免的。没有类似于Set
的接口可以使用。这是Java输入的限制的结果。