【发布时间】:2021-10-25 18:32:07
【问题描述】:
Lombok @SuperBuilder 不适用于 kotlin 用例中的继承:
@Data
@Entity
@EqualsAndHashCode(callSuper = true)
@NoArgsConstructor
@ToString(callSuper = true)
@SuperBuilder
open class Test1 : Test2() {
@Nullable
@JsonIgnore
@Id
private val id: Int? = null
fun of(id: String?, code: String?, label: String?, sort: Int?): Test1 {
return Test1.builder().id(id).code(code).label(label).sort(sort).build()
}
}
@MappedSuperclass
@Data
@NoArgsConstructor
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Slf4j
@DiscriminatorValue("logging")
@Polymorphism
@SuperBuilder
open class Test2 : Test3() {
@Nullable
@JsonIgnore
private val lngId: Int? = null
@Nullable
@JsonIgnore
private val requestedLngId: Int? = null
}
@Data
@NoArgsConstructor
@AllArgsConstructor(staticName = "of")
@EqualsAndHashCode(onlyExplicitlyIncluded = true)
@MappedSuperclass
@Polymorphism(type = PolymorphismType.IMPLICIT)
@DiscriminatorValue("simple")
@SuperBuilder
open class Test3 {
@Id
@EqualsAndHashCode.Include
private val id: String? = null
@EqualsAndHashCode.Include
private val code: String? = null
@Nullable
private val label: String? = null
@Nullable
private val sort: Int? = null
}
Test1.builder().id("36").code("code").label("label").build();
我无法检索父类中存在的数据。我不确定如何将注释 @superbuilder 与上述 kotlin 代码一起用于上述场景。 @superbuilder 适用于普通类,但不适用于 kotlin 代码中的类
【问题讨论】:
-
我不明白你想做什么。您想将 Java 源代码转换为 Kotlin 源代码吗?或者您想从 Kotlin 代码中使用 Lombok 增强的 Java 类?您是否使用 Kotlin 的 Lombok 编译器插件 (
org.jetbrains.kotlin.plugin.lombok)? -
请编辑您的帖子并删除未使用的详细信息和文本以简化您的问题,并注意关注您的主要问题并详细解释它以帮助其他人回答您的问题。
-
我添加了 kotlin 代码以便更好地理解。我无法实现 Superbuilder 注释。请针对该问题提出解决方案或替代方案。
标签: kotlin multiple-inheritance lombok kotlin-android-extensions