В С# 6.0 введен оператор nameof()
, который возвращает строку, представляющую имя любого идентификатора класса/функции/метода/локальной переменной/свойства, помещенного в него.
Если у меня есть такой класс:
class MyClass
{
public SomeOtherClass MyProperty { get; set; }
public void MyMethod()
{
var aLocalVariable = 12;
}
}
Я могу использовать оператор так:
// with class name:
var s = nameof(MyClass); // s == "MyClass"
// with properties:
var s = nameof(MyClass.OneProperty); // s == "OneProperty"
// with methods:
var s = nameof(MyClass.MyMethod); // s == "MyMethod"
// with local variables:
var s = nameof(aLocalVariable); // s == "aLocalVariable".
Это полезно, поскольку правильная строка проверяется во время компиляции. Если я неправильно пишу имя какого-либо свойства/метода/переменной, компилятор возвращает ошибку. Кроме того, если я сделаю рефакторинг, все строки будут автоматически обновлены. Смотрите, например, эту документацию для реальных случаев использования.
Есть ли эквивалент этого оператора в Java? В противном случае, как я могу достичь того же результата (или аналогичного)?