编程语言
首页 > 编程语言> > Java中的等价名称

Java中的等价名称

作者:互联网

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".

这很有用,因为在编译时检查了正确的字符串.如果我拼错某些属性/方法/变量的名称,编译器将返回错误.此外,如果我重构,所有字符串都会自动更新.有关实际用例,请参阅例如this documentation.

Java中是否有该运算符的等价物?否则,我怎样才能达到相同的结果(或相似)?

解决方法:

可悲的是,没有这样的事情.我一直在寻找这个功能,答案似乎是,一般来说,这个东西不存在.

Get name of a field

当然,您可以使用“命名”注释来注释您的字段,从根本上为您自己的类完成此目标.实际上,有各种各样的框架依赖于类似的概念.即便如此,这也不是自动的.

标签:java,nameof
来源: https://codeday.me/bug/20191006/1860268.html