Я использую следующий метод в Скале разжиться всех полей в классе:Найти синтетические элементы в полях класса в Scala
val fields = contract.getClass.getDeclaredFields.toList.map(value => {
value.setAccessible(true)
value.getName
})
contract
был определен как класс в моем коде. Поскольку я использую отражение, проблема в том, что я получаю еще один элемент $jacocoData
как одно из полей. Я хочу игнорировать это поле. «Хакерный» способ сделать это состоит в том, чтобы знать, что он всегда добавляется в конце списка, поэтому я могу «исправить» его, изменив свою подпись функции, включив productArity
и получив только первое число arity
. это:
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
}
Согласно последней точке this FAQ, мне нужно, чтобы избавиться от синтетических членов класса. Как мне это сделать?