假设有两个并行类:
class A(
val stringField: String,
val intField: Int,
val floatField: Float
)
class B(
val stringField: Boolean,
val intField: Boolean,
val floatField: Boolean
)
请注意,两个类具有相同的字段名称,但它们的类型不同。
我想知道是否可以在编译时以某种方式强制执行,以便当 A 类具有 B 类没有的字段名称时它不会编译。
在运行时我可能会使用一些反射来强制执行此操作,但我真的很好奇它是否可能在编译时进行,并且也不想为此求助于反射。
编辑 1:我现在确实看到泛型可能是这里解决方案的一部分,但在实际情况下,A 类有很多不同类型的字段,而 B 类中的所有字段总是 type Boolean
。理想情况下,我不必为 A 类中使用的每个不同字段类型添加泛型
编辑 2:有关手头用例的更多详细信息:
我需要将一个Full
对象转换为Partial
一个基于一些的对象Configuration
(配置的字段false
最终应该null
在Partial
对象中)。这三个类非常相似,这就是为什么我想对它们强制执行合同(这样它们就不会随着时间的推移而失去同步)。
class Full(
val stringField: String,
val intField: Int,
val floatField: Float,
...
)
class Partial(
val stringField: String?,
val intField: Int?,
val floatField: Float?,
...
)
class Configuration(
val stringField: Boolean,
val intField: Boolean,
val floatField: Boolean,
...
)