Kotlin - How i can access my new class extension function from another file

K.Os picture K.Os · Oct 2, 2017 · Viewed 15.1k times · Source

I am very new to Kotlin.

I want to be able to add a function to my abstract class, so when I define that function I will be able to invoke that on every child from that class(they inherit the abstract class)

However,I want to define those extension functions in other file. I can't access those functions when i try to invoke them on a particular child implementation of the abstract class.

What are the rules, that I need to made to resolve my problem?

I want to by able achieve something like this:

abstract class Parent(val val1, val val2, val val3){}

class Child(var val1, var val2, var val3) : Parent(val1, val2, val3){}

class Child2(var val1, var val2, var val3) : Parent(val1, val2, val3){}

The extension method for parent and all childs:

 fun Parent.convertToChild2( ): Child2? {

return //some creation method of Child2
} 

And I want to be able to invoke this:

child: Child
child.convertToChild2

I defined all classes in separate file and also the extension function in other file.

I cannot access the function like this - is not visible.

Answer

K.Os picture K.Os · Oct 2, 2017

The answer for my question, that satisfies me is just to extract the method to some "object" structure in other file and whenever we want to access that function we must import the path(package.object.method) to this.

But the problem is, that IDE is not propose me the path to my extension function - i must import it by myself.

I am using Android Studio 3 preview, hope this will be fixed.

UPDATE

It is better to define those function in just plain Kotlin file, so the functions will be not owned by any structure. Then it will be not a problem with importing those automatically by IDE from any place.