当前位置: 首页 > 面试题库 >

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

董永宁
2023-03-14
问题内容

我有一个字段和一个具有相同名称的局部变量。如何进入该领域?

码:

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

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

::s

是Java中的::运算符吗?


问题答案:

那不是全局变量,而是实例变量。只需使用this

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

(有关的含义,请参见JLS第15.8.3节this。)

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

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

在大多数情况下,我宁愿不要使用与实例或静态变量同名的局部变量,但值得注意的例外是构造函数和设置器,这两者通常都有意义,它们的参数与实例变量同名:

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 8中,您有可能是基于实例

  • 问题内容: 如何在其他.go包/文件中的main.go中访问已声明/初始化的变量?不断告诉我变量未定义(我知道全局变量不好,但这只是用作时间戳记) 在main.go中 尝试访问其他.go文件中的StartTime,但保持未定义StartTime 问题答案: 我将改为“注入” starttime变量,否则在软件包之间会有循环依赖关系。 main.go otherpackage.go

  • 这个问题是针对Java的 下面是一个例子:

  • 问题内容: 我想使用a 对图进行拓扑排序。为简便起见,我想为比较器使用匿名内部类。但是,我需要访问该图才能确定我正在查看的节点的程度。这可能吗? 正确的代码 问题答案: 是的,使其最终化: 有关最终关键字,请参见最终词: 匿名本地课程 第二种情况涉及最终变量,实际上是语言语义所规定的。在这种情况下,除非声明为final,否则Java编译器将不允许您使用变量。这种情况出现在闭包(也称为匿名本地类)中

  • 问题内容: 我正在尝试创建一个BMI计算器。这应该允许人们使用公制或英制。 我意识到我可以使用隐藏标签来解决问题,但是以前这使我很头疼,所以我想问一下:我可以用来查找提交的variableName字段值;但是…我不知道,也不知道如何验证 用于 提交变量的表单。 我的代码如下(尽管我不确定它是否与问题严格相关): 我通过metric验证了它的有效性(尽管目前尚无验证-我不想让我的问题太多)。我已经添

  • 问题内容: 我了解Python中局部变量和全局变量的概念,但是我只是有一个问题,为什么下面的代码中会出现错误?Python逐行执行代码,因此在读取第5行之前,它不知道a是局部变量。Python尝试执行第5行后,会回退一行并将其标记为错误吗? 问题答案: 设置和测试 为了分析您的问题,让我们创建两个独立的测试函数来复制您的问题: 版画。因此,调用此函数不是问题,而是在下一个函数上: 我们收到一个错误