Mam dwa projekty, projekt scala i projekt Java. Mój projekt scala odwołuje się do projektu java na ścieżce budowania. W moim projekcie java, jestem oświadczając następującą adnotację:Jak uzyskać adnotacje metody Java do pracy w scala
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
w moim projekcie Scala, mam opisywanie pewnych metod. To znaczy.
class MyClass {
...
@MyAnnotation(Name="Blah")
def myMethod() {
...
}
}
Gdzieś w innym pliku, próbuję usunąć adnotacje.
var methods = myClassInstance.getClass().getDeclaredMethods()
var myMethod : Method = null
for (method <- methods) {
if (method.getName().equals("myMethod")) {
myMethod = method
}
}
var annotations = myMethod.getDeclaredAnnotations()
Niestety, annotations
jest zawsze pustą tablicą. Czy robię coś fundamentalnie złego, czy też brakuje mi czegoś nieznacznego? Dzięki!
EDIT Początkowo byłem adnotacji myMethod z myAnnotation dwa razy, co jest błędne, jak ktoś zauważył. Okazuje się, że to nie był problem. Wciąż otrzymuję pustą tablicę dla annotations
. Nie jest zgłaszany wyjątek.
Dzięki za wskazanie tego. Niestety to nie był problem. Nawet z jedną adnotacją wciąż otrzymuję pustą tablicę. Nie został zgłoszony żaden wyjątek. – Jordan
Jak to działa? Czy możesz wysłać przykład? Dzięki! – Jordan
Jak już powiedziałem, używam tylko opublikowanego kodu. Twój opublikowany kod podnosi wyjątki (pierwsza wersja) i ma błędy kompilacji (druga wersja, powinieneś zdefiniować typ dla linii "var myMethod = null"), po ich rozwiązaniu działa. A moja wersja scala to 2.9.3 –