Ho due progetti, un progetto scala e un progetto java. Il mio progetto scala fa riferimento al progetto java nel percorso di generazione. Nel mio progetto Java, sto dichiarando la seguente annotazione:Come far funzionare le annotazioni del metodo java in scala
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface MyAnnotation {
public String Name();
}
Nel mio progetto Scala, che sto annotando alcuni metodi. Cioè
class MyClass {
...
@MyAnnotation(Name="Blah")
def myMethod() {
...
}
}
In un altro file da qualche parte, sto cercando di estrarre le annotazioni.
var methods = myClassInstance.getClass().getDeclaredMethods()
var myMethod : Method = null
for (method <- methods) {
if (method.getName().equals("myMethod")) {
myMethod = method
}
}
var annotations = myMethod.getDeclaredAnnotations()
Sfortunatamente, annotations
è sempre un array vuoto. Sto facendo qualcosa di fondamentalmente sbagliato o sto semplicemente perdendo qualcosa di secondario? Grazie!
EDIT Originariamente, ero annotare myMethod con myAnnotation due volte, che non è corretto come qualcuno ha sottolineato. Si scopre che questo non era il problema. Sto ancora ottenendo un array vuoto per annotations
. Nessuna eccezione viene lanciata.
Grazie per averlo indicato. Sfortunatamente non era questo il problema. Anche con un'annotazione, sto ancora ricevendo un array vuoto. Nessuna eccezione viene lanciata – Jordan
Come hai fatto a far funzionare questo? Puoi pubblicare un esempio? Grazie! – Jordan
Come ho detto, io uso solo il codice postato. Il tuo codice postato genera eccezioni (prima versione) e ha errori di compilazione (seconda versione, dovresti definire il tipo per la riga 'var myMethod = null'), dopo che li ho risolti, funziona. E la mia versione di scala è 2.9.3 –