java - 当字段名称与局部变量相同时如何访问字段?

标签 java scope

我有一个字段和一个同名的局部变量。如何访问该字段?

代码:

String  s = "Global";
private void mx()
{
   String  s = "Local";
   lblB.setText(s); // i want global
}

在 C++ 中使用::运算符,如下所示:

::s

Java 中的::运算符是吗?

最佳答案

这不是一个全局变量 - 它是一个实例变量。只需使用这个:

String  s = "Local";
lblB.setText(this.s);

(请参阅 JLS section 15.8.3 了解 this 的含义。)

对于静态变量(这是人们谈论全局变量时通常的意思),您可以使用类名来限定变量名:

String  s = "Local";
lblB.setText(ClassDeclaringTheVariable.s);

在大多数情况下,我不喜欢使用与实例或静态变量同名的局部变量,但值得注意的异常(exception)是构造函数和 setter ,这两者通常具有相同名称的参数是有意义的作为实例变量:

public class Person {
    private String name;

    public Person(String name) {
        this.name = name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

关于java - 当字段名称与局部变量相同时如何访问字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19174623/

相关文章:

Java注解: at variable initialization,但不能赋值?

c - 在同一个 for 循环中递增和打印变量

c++ - std::vector 不保留在实现中实例化的推回对象

Javascript 变量范围问题 - 错误 : TypeError: this. 图形未定义

javascript - MEAN.JS 堆栈 $http.post().success() 将变量传递到 success() 匿名函数作用域问题

scope - 声明在其范围之外仍然有效的符号

java - 如何通过设置内容类型以 .xlsx 保存文件

java - 在java中使用array_agg序列化psql结果集

java - 如何通过eclipse使用Web服务客户端generetad

javascript - 如何在 Selenium WebDriver 中使用 JavascriptExecuter 设置属性值