EnumSet 类,在运行时获取元素类型

我正在尝试扩展 https://github.com/tennaito/rsql-jpa 库以支持EnumSet字段。

如果我硬编码 ArgumentParser 以将 EnumSet 属性值转换为特定查询,那么我就可以处理针对数据库的实际查询。

我的问题是,给定一个查询,ArgumentParser得到一个JavaType:和字符串枚举值。enumsetfield=IN=(enumvalue)class java.util.EnumSet

如何从 JavaType 获取元素类型?我还可以访问一个如果可能包含元素类型。org.hibernate.jpa.criteria.path.SingularAttributePath


侃侃无极
浏览 174回答 2
2回答

蓝山帝景

也许能够使用反射来获取存储元素类的类中的非公共字段。例如,对于 OpenJDK 8,这里是 的源代码,元素类的字段称为 。但是,这将是特定于类库实现的实现,而不是可移植的。EnumSetEnumSetelementType

慕斯王

我最终在SingularAttributePath上找到了所需的信息:格式为: - 这不是最佳的,我不得不重写rsql-jpa很多,我最终意识到IN查询在比较两个集合方面没有多大意义。所以现在的查询是path.attribute.member.signatureLjava/util/EnumSet<Lmy.project.enum;>;enumsetfield==enumvalue
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python