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は全く同じものを持っていないかなり確信しています。だからpre C#6のように、代わりに文字列リテラルを使う必要があるでしょう。 – juharr
'nameof'はC#(6)の最新バージョンに追加された構文砂糖です。私はかなりJava(または一般的に最も一般的な言語)に相当するものはないと確信しています。 – Abion47
この機能を使用して解決しようとしている問題は何ですか? – OldProgrammer