Скажем, у меня есть следующий класс:
class Person {
@BeanProperty
var firstName: String = _
}
Можно ли получить строковое представление «firstName» безопасным способом, путем отражения или чего-то еще? Или строковое представление сгенерированной функции "getFirstName"?
Было бы неплохо, если бы это как-то выглядело так:
val p = new Person
p.getFunction(p.getFirstName).toString // "getFirstName"
p.getAttribute(p.firstName).toString // "firstName"
ИЗМЕНИТЬ
Хорошо, нужно больше пояснений ;)
Скажем, я хочу построить SQL-запрос следующим образом:
val jpql = "select p from Person p where p.age > 20";
Поэтому я хочу сделать его максимально безопасным для типов и написать что-то вроде этого:
val jpql = "select p from " + classOf[Person].getName + " where p." +
Person.getAttName(p.age) + " > 20";
Таким образом, если в будущем появится возможность реорганизовать код Scala, я мог бы изменить имя атрибута Person, не нарушая свой код.