Ich implementiere die Dropwizard-Beispielanwendung in Kotlin und habe ein Problem bei der Implementierung von DateRequiredFeature. Der Java-Code-Code ist wie folgt:Implementierung einer Java-Annotation in Kotlin
@Provider
public class DateRequiredFeature implements DynamicFeature {
@Override
public void configure(ResourceInfo resourceInfo, FeatureContext context) {
if (resourceInfo.getResourceMethod().getAnnotation(DateRequired.class) != null) {
context.register(DateNotSpecifiedFilter.class);
}
}
}
mit der Anmerkung wie folgt definiert:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface DateRequired {}
Für die Kotlin Seite I für das Merkmal haben:
@Provider
class DateRequiredFeature : DynamicFeature(){
override fun configure(resourceInfo: ResourceInfo, context: FeatureContext) {
if (resourceInfo.resourceMethod.getAnnotation(DateRequired::class.java) != null) {
context.register(DateNotSpecifiedFilter::class.java)
}
}
}
aber ist nicht klar, wie Sie die entsprechende DateRequired
Annotation implementieren, so dass getAnnotation()
gültig ist. Die (Java) Signatur für getAnnotation()
ist
public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
Hinweis
Sieht aus wie ein IntelliJ Fehler, ich brauche die Anmerkung ausdrücklich importieren, obwohl sie im selben Paket ist:
...
import DateRequired
@Provider
class DateRequiredFeature : DynamicFeature {
override fun configure(resourceInfo: ResourceInfo, context: FeatureContext) {
if (resourceInfo.resourceMethod.getAnnotation(DateRequired::class.java) != null) {
context.register(DateNotSpecifiedFilter::class.java)
}
}
}
dann ist alles gut mit Standard-Kotlin-Annotation annotation class DateRequired
Ich bin mir nicht sicher, was Sie tun möchten. Möchten Sie die Anmerkung zu Kotlin rekodieren? – Mibac
Ich möchte "DateRequired" Annotation in Kotlin so implementieren, dass der Aufruf 'resourceInfo.resourceMethod.getAnnotation (DateRequired ..)' funktioniert. –