В C# 6.0 введен оператор nameof()
, который возвращает строку, представляющую имя любого идентификатора класса/функции/метода/локальной переменной/свойства, помещенного внутри него.имя эквивалента в Java
Если у меня есть класс вроде этого:
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".
Это полезно, так как правильная строка проверяется во время компиляции. Если я пропущу имя некоторого свойства/метода/переменной, компилятор возвращает ошибку. Кроме того, если я рефакторинг, все строки автоматически обновляются. См., Например, this documentation для реальных случаев использования.
Есть ли какой-либо эквивалент этого оператора в Java? В противном случае, как я могу достичь того же результата (или аналогичного)?
Довольно уверен, что Java не имеет ничего точно эквивалент. Так что, как и до C# 6, вам скорее всего придется использовать строковые литералы. – juharr
'nameof' - это синтаксический сахар, добавленный в последней версии C# (6).Я почти уверен, что Java (или большинство популярных языков вообще) не будет иметь эквивалент. – Abion47
Какую проблему вы пытаетесь решить, имея такую возможность? – OldProgrammer