看看可能对您有所帮助的Reflections库。
您应该能够获得以下所有子类型HavingUniqueValues
:
val subjects: Set<Class<out HavingUniqueValues>> =
Reflections("your.package").getSubTypesOf(HavingUniqueValues::class.java)
现在,这将产生一组所有实现的枚举类HavingUniqueValues
。您可以迭代它们的所有值以了解它们是否唯一:
subjects.forEach { enumClass ->
assertEquals(
enumClass.enumConstants.size,
enumClass.enumConstants.map(HavingUniqueValues::v).toSet().size
)
}
我toSet()
在这里用来删除所有非唯一值。
这将通过测试:
enum class EnumName(override val v: Int) : HavingUniqueValues { ONE(1), TWO(2), THREE(3) }
这将无法通过测试:
enum class EnumName(override val v: Int) : HavingUniqueValues { ONE(1), TWO(2), THREE(2) }