hier sind zwei CodebeispieleBug in Kotlin Annotation?
java:
public class Q {
@Retention(RetentionPolicy.SOURCE)
@IntDef({LOL.one, LOL.two})
@interface Lol{}
public final class LOL{
public final static int one = 1;
public final static int two = 2;
}
public Q(){
q(1);
}
void q (@Lol int q){
}
}
Kotlin:
class Q {
@Retention(AnnotationRetention.SOURCE)
@IntDef(LOL.one, LOL.two)
internal annotation class Lol
object LOL {
const val one = 1L
const val two = 2L
}
init {
q(1)
}
internal fun q(@Lol q: Int) {
}
}
probleb hier: in java Aufruf dieser q (1); zeigt Ihnen einen Fehler wie: "muss eines sein ..."
aber in Kotlin gibt es keine Fehlermeldung, so dass wir als Parameter beliebig lange setzen können ... so verlieren wir die Vorteile der Annotation als Parameter ...
sieht aus wie ein Käfer oder ich mache etwas falsch?
nicht implementiert Funktion, die jetzt aussieht wie ein Fehler :) aber immer noch danke für die Beantwortung! wird auf Updates warten! –
@AndriyAntonov Technisch gesehen ist das kein Fehler, weil es nur zur Kompilierungszeit eine Flusenprüfung durchführt. Es hängt von der IDE ab, sie zu unterstützen. – Joshua