2015-04-27 21 views
12

È possibile aggiungere una funzione di estensione statica simile all'aggiunta di una funzione di estensione a un oggetto compagno. Ho provatoFunzione di estensione statica su una classe Java

public fun ByteBuffer.Companion.invoke(capacity: Int): ByteBuffer 

ma ha causato riferimenti non risolti: Companion. Presumo solo che ciò sia dovuto al fatto che Companion non è definito nel codice java.

+2

Questo non è supportato al momento –

+1

Lo stesso vale per una classe Kotlin, che non ha un oggetto Companion. – D3xter

risposta

7

Hai ragione, le classi Java non hanno oggetti complementari. È possibile aggiungere estensioni per le classi (mostra sul istanze della classe), o ad oggetti compagno dichiarati (sarà simile a una statica sulla classe):

class A { companion object } 
class B { companion object Test } 

fun A.Companion.foo() { println("Test A.foo") } 
fun B.Test.foo() { println("Test B.foo") } 

fun main(args: Array<String>) { 
    A.foo() // prints «Test A.foo» 
    B.foo() // prints «Test B.foo» 
} 

esempio funziona in Kotlin 0.15.126

Problemi correlati