2015-06-16 15 views

Odpowiedz

2

Można mieszać Kotlin i Java (wykorzystanie/Call Kotlin zajęcia w klasach Java) Ale co chcesz tutaj jest użycie funkcji Kotlin w java - nie jest to możliwe

+0

dzięki - Myślałem, że to jest jak możliwe – Informatic0re

13

funkcje rozszerzające Kotlin są kompilowane do metod JVM przyjęcie odbiornika jako pierwszego parametru. Jeśli funkcja rozszerzenie jest zadeklarowana na najwyższym poziomie, na przykład w pliku o nazwie file.kt:

package foo 

fun String.getSomething(): String { 
    return "something" 
} 

Następnie w Javie, można wywołać metodę statyczną z odpowiedniego file class:

import foo.FileKt; 

... 

String someString = "blabla"; 
FileKt.getSomething(someString); 
+0

Ale nie mogę nazwać someString.getSomething()? Pomyślałem, że to możliwe, żeby wymieszać języki. "Zmienianie" klasy String za pomocą Kotlin i używanie tych zmian w java. – Informatic0re

+2

Nie, nie możesz. Funkcje rozszerzeń/właściwości w pakiecie są po prostu syntaktycznym cukrem dla metod statycznych, nie mają i nie mogą zmienić odpowiedniej klasy odbiornika. Również Java nie jest językiem rozszerzalnym pod tym względem, nie ma niczego w specyfikacji języka Java, które by to pozwoliło. –