java - LinkedHashSet 在低级数据存储获取 Java 中返回为 HashSet
问题描述
参数声明如下,
@Persistent private Set<ScopeType> scope = new LinkedHashSet<ScopeType>();
使用高级数据存储提取进行提取时,它会使用LinkedHashSet进行响应,但在低级提取时,响应是HashSet,这是预期的吗?
解决方案
这看起来很合理。的类型scope
是Set
,不是,LinkedHashSet
也不是HashSet
。这些是实现类型。的任何用户scope
只保证声明的类型得到满足,而不是特定的实现正在使用中。
如果LinkedHashSet
必须保持 的保序特性,则scope
必须声明为LinkedHashSet
。
使用具体类型作为声明类型会破坏大多数样式规则,但在这种情况下是不可避免的。没有类似的界面Set
可供使用。这是java类型限制的结果。
推荐阅读
- annotations - 使用 Postman 的 D365 机会备注附件
- python - 具有多个索引的 Pandas 数据透视表排序
- javascript - 如何使用动态生成的属性名称访问表单属性以填充多个下拉列表
- c# - 如何在 xamarin.forms 中为 collectionview 中的元素设置动画
- css - 前两个单元格的动态 CSS 网格
- python - 在 Tree View Odoo 14 中禁用可编辑字段
- html - 如何在角度原生脚本上反转换行布局的顺序
- sql - 未能在 redshift 中对特定模式的表授予选择权限
- xamarin.forms - 为什么 Syncfusion Xamarin.Forms DataForm 忽略列跨度的网格附加属性?
- android - 根据情况更改值,并保存到 SharedPreferences。如果情况发生变化,请分配新值而不是加载前一个值