Pregunta

The Kotlin documentation says that

All classes in Kotlin have a common superclass Any, that is a default super for a class with no supertypes declared

If I try and explicitly inherit from Any:

class MyClass : Any {

}

The compiler gives an error:

Kotlin: This type has a constructor, and thus must be initialized here

I haven't been able to find the documentation for the Any class. Is it possible to explicitly inherit from Any, and if so, what do you pass it?

¿Fue útil?

Solución

You have to call the constructor explicitly:

class MyClass : Any()

THe constructor of Any has no parameters, thus to call it you simply provide the empty parentheses

Otros consejos

In case we are extending a class,we need to add brackets(for implicit constructor)

class MyClass : Any()

This is similar to calling

   class MyClass extends Any
    {
      MyClass()
      {
        super();
      }
   }

But if we are implementing an interface(interface do not have constructors),syntax should be the following

  class MyClass : BaseInterface

In case when you have secondary constructor (key word constructor) you can use the next syntax

class MyClass : Any {
    constructor() : super()
}

If the class has no primary constructor, then each secondary constructor has to initialize the base type using the super keyword, or to delegate to another constructor which does that.

Read more here - https://kotlinlang.org/docs/reference/classes.html

P.S. your problem could be solved easily using Android Studio feature - Project quick fix (show intention actions and quick fixes) Win - Alt + Enter, Mac - Option + Enter

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top