【发布时间】:2020-05-01 09:20:04
【问题描述】:
我想伪造一个名为“EnumTuple”的通用数据类,它将来自不同 Enum 类的自然数量的不同 Enum 元素一起存储在一个元组中。 假设我得到了这三个 Enum 类:
public Enum Gender {
FEMALE, MALE, OTHER
}
public enum Age {
YOUNG, MIDDLEAGED, OLD
}
public enum Personality {
EXTROVERT, INTROVERT
}
我希望能够像这样实例化 EnumTuple 类:
EnumTuple person1 = new EnumTuple<Gender, Age, Personality>(Gender.OTHER, Age.MIDDLEAGED, Personality.EXTROVERT);
EnumTuple person2 = new EnumTuple<Personality, Gender>(Personality.INTROVERT, Gender.FEMALE);
EnumTuple person3 = new EnumTuple<Age>(Age.OLD);
但我不知道如何到达那里,甚至是否可以用 Java 或 Kotlin 编写这样的数据类,因为看起来每个类只能有固定数量的泛型类型。
对于那些好奇的人,我正在尝试实现候选消除算法 (https://artint.info/html/ArtInt_193.html) 的简洁通用版本,其中输入特征集是我尝试设计的枚举元素元组。
最后,如果您手头有解决方法或知道另一种支持可变数量泛型类型的编程语言,请告诉我
【问题讨论】:
-
你会如何使用
EnumTuple?您希望提供什么方法? -
@samabcde 我打算逐个元素地比较两个相似泛型类型的 EnumTuples,以确定它们是否相等,以及它们在哪些元素上不同。让我们设置一些示例变量:
EnumTuple<Gender, Age> person1 = EnumTuple<Gender, Age>(Gender.FEMALE, Age.YOUNG); EnumTuple<Gender, Age> person2 = EnumTuple<Gender, Age>(Gender.MALE, Age.YOUNG);现在我希望能够比较它们:assertFalse(person1.isEqualTo(person2)); assertEquals(person1.getDifferenceTo(person2), [false, true]); -
我知道这也可以通过具有固定数量的泛型类型的普通泛型类来实现。我只是想让我的实现更加通用和可重用
标签: java generics kotlin tuples variadic