https://kotlinlang.org logo
#getting-started
Title
# getting-started
d

Donny

10/24/2023, 7:20 PM
Having another issue with 1.9.20. Getting a "Property must be initialized, be final, or be abstract" error. I have an open class with an uninitialized val that is set in an init, so it is effectively final.
Copy code
open class MyClass {
   override val myVal: MyInnerClass

   init {
     myVal = MyInnerClass()
   }

   inner class MyClass() {
     ...
   }
}
m

Mikhail

10/25/2023, 4:43 AM
Copy code
override val myVal: MyInnerClass = MyInnerClass()
You need not use init block here Also you don't extend base class or interface, so using
override
modifier is error too.
c

CLOVIS

10/25/2023, 7:25 AM
override
means "I'm replacing a variable declared by a supertype". Your class has no supertypes, so
override
is forbidden. As @Mikhail said, you can initialize the value directly on declaration.
Copy code
class MyClass {
    val myVal = MyInnerClass()

    inner class MyInnerClass
}
k

Klitos Kyriacou

10/25/2023, 8:25 AM
This should be an error in older releases, not just 1.9.20.
2
d

Donny

10/25/2023, 10:35 AM
Sorry. It does extend a base class. I just didn't list it.
13 Views