gpt4 book ai didi

java - 是否可以强制两个类在编译时实现相同的字段名称但类型不同?

转载 作者:行者123 更新时间:2023-12-01 14:31:53 26 4
gpt4 key购买 nike

假设有两个并行类:

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 中,所有字段都是始终为 Boolean 类型。理想情况下,我不必为 A 类中使用的每个不同字段类型添加泛型

编辑 2:有关手头用例的更多详细信息:

我需要根据一些Configuration(配置为的字段)将一个Full对象转换成一个Partial对象false 应该在 Partial 对象中成为 null)。这三个类表现出非常相似,这就是为什么我想对它们执行契约(这样它们就不会随着时间的推移而失去同步)。

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,
...
)

最佳答案

这不是编译时检查,但您始终可以编写强制执行此约束的测试。

例如,我编写了一个测试,找到所有用我的 DSL 注释修饰的函数,并验证所有这些函数都在我们的文档中进行了描述(是的!测试文档!)。

您可以使用 reflections使使用反射更有趣的库(kotlin-reflect 已经很好但仍然......)。

关于java - 是否可以强制两个类在编译时实现相同的字段名称但类型不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62468324/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com