Explicit inheritance from Any in Kotlin - Can and How is it done?

StackOverflow https://stackoverflow.com/questions/21977443

  •  15-10-2022
  •  | 
  •  

سؤال

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?

هل كانت مفيدة؟

المحلول

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

نصائح أخرى

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top