2017-10-17 9 views
1

J'ai une classe Kotlin qui étend une classe Java.Champ statique d'accès de la superclasse Java

Kotlin

class MyKotlinClass: MyJavaClass() { 

    companion object { 
     const val STATUS_SUB = 1 
    } 
} 

Java

public abstract class MyJavaClass { 

    public static final int STATUS_SUPER = 0 

} 

Comment puis-je accéder au champ super classe dans la sous-classe Kotlin?

Kotlin

when(status) { 
    MyKotlinClass.STATUS_SUPER -> something() 
    MyKotlinClass.STATUS_SUB -> somethingElse() 
} 

Est-ce possible? Il dit "référence non résolue: STATUS_SUPER" Serait-il possible sans utiliser MyJavaClass.STATUS_SUPER?

Répondre

2

Essayez

MyJavaClass.STATUS_SUPER 

Depuis STATUS_SUPER est pas membre de MyKotlinClass vous ne serez pas en mesure d'y accéder.

+0

est-ce possible sans se référer à la super classe? – dumazy

+1

Non, car les membres 'static' ne peuvent pas être hérités. L'héritage ne fonctionne que sur les instances. –

+0

Hmm, dommage. Avec une sous-classe Java au lieu de kotlin, ce serait possible – dumazy