Dutch
01/09/2022, 12:32 AMabstract class A(
open var field1: String
)
abstract class B(
override var field1 : String
) : A(field1)
I tried to also create a corresponding PropertySpec for my class, but as a result I get the following:
public abstract class B(
override field1: String
) : A() {
public override var field1: String
}
ephemient
01/09/2022, 12:56 AMTypeSpec.classBuilder("B")
.addModifiers(KModifier.ABSTRACT)
.primaryConstructor(FunSpec.constructorBuilder()
.addParameter("field1", STRING)
.build())
.superclass(ClassName("example", "A"))
.addSuperclassConstructorParameter("field1")
.addProperty(PropertySpec.builder("field1", STRING, KModifier.OVERRIDE)
.mutable()
.initializer("field1")
.build())
.build()
ephemient
01/09/2022, 12:57 AMpublic abstract class B(
field1: String
) : A(field1)
which still has a var field1: String
Dutch
01/09/2022, 1:10 AMoverride var
part, which is needed since I want to add the Room annotation "`ColumnInfo`"
Following this issue: https://github.com/square/kotlinpoet/issues/113 tells me that I need to add a property to my class, but even then, I don't get a var
or val
I'm currently generating a test class with:
classBuilder.superclass(classDeclaration.buildClassName())
classBuilder.primaryConstructor(FunSpec.constructorBuilder()
.addParameter(ParameterSpec.builder("cheese", String::class)
.addModifiers(KModifier.OVERRIDE)
.build())
.build())
classBuilder.addSuperclassConstructorParameter("cheese")
classBuilder.addProperty(PropertySpec.builder("cheese", String::class)
.addModifiers(KModifier.OVERRIDE)
.mutable()
.build())
And tried it with and without the propertyephemient
01/09/2022, 1:11 AMDutch
01/09/2022, 1:16 AMvar
part.
The PropertySpec is only there because in the issue it is stated that that one is neccesary for kotlinpoet to create the var
or val
at ParameterSpec levelephemient
01/09/2022, 1:17 AMDutch
01/09/2022, 1:19 AMDutch
01/09/2022, 1:19 AMephemient
01/09/2022, 1:21 AMpublic class A(
cheese: String
) : A(cheese) {
public override var cheese: String
}
which is validDutch
01/09/2022, 1:38 AMvar
.
So now I'm back at my first problem... Since it doesn't has a `var`or is overriden I cannot add my annotionDutch
01/09/2022, 2:06 AMinitializer
to be set to the ParameterSpec
nameDutch
01/09/2022, 2:07 AMclassBuilder.superclass(classDeclaration.buildClassName())
classBuilder
.primaryConstructor(FunSpec.constructorBuilder()
.addParameter(ParameterSpec.builder("userName2", String::class)
.addModifiers(KModifier.OVERRIDE)
.addAnnotation(AnnotationSpec.builder(ColumnInfo::class).build())
.build())
.build())
classBuilder.addSuperclassConstructorParameter("userName2")
classBuilder.addProperty(PropertySpec.builder("userName2", String::class)
.addModifiers(KModifier.OVERRIDE)
.initializer("userName2")
.mutable()
.build())