Sto usando il seguente metodo in scala per entrare in possesso di tutti i campi di una classe:Trova membri sintetici in campi di classe in Scala
val fields = contract.getClass.getDeclaredFields.toList.map(value => {
value.setAccessible(true)
value.getName
})
contract
è stato definito come una classe nel mio codice. Dal momento che sto usando la riflessione, il problema è che ottengo un altro elemento $jacocoData
come uno dei campi. Voglio ignorare questo campo. Il modo "hacky" di farlo è sapere che è sempre aggiunto alla fine dell'elenco, quindi posso "aggiustarlo" cambiando la mia firma della funzione per includere productArity
e prendere solo il primo numero arity
di elementi come questo:
def getFields(contract: Contract, arity: Int): List[String] = {
val fields = contract.getClass.getDeclaredFields.toList.map(value => {
value.setAccessible(true)
value.getName
})
//to ignore $jacocoData (Java code coverage) field
val firstnFields = fields.take(arity)
firstnFields
}
Secondo l'ultimo punto di this FAQ, ho bisogno di sbarazzarsi fuori i membri di sintesi di una classe. Come lo faccio?