C# 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にその演算子に相当するものはありますか? それ以外の場合、どうすれば同じ結果 (または同様の結果) を得ることができますか?