【问题标题】:Can member variable and local method variable have the same name?成员变量和局部方法变量可以同名吗?
【发布时间】:2011-06-16 06:51:27
【问题描述】:

我将如何做到这一点?

class Test {
    private int var1;

    public Test(int var1) {
        var1 = var1; //set the member variable to what was passed in
    }
}

我确信有一个非常明显的答案。它现在只是在逃避我。

【问题讨论】:

  • 看看一些好的代码。你会看到这个 (this.x = x) 被用于设置器和构造器。发明一个新名字是没有意义的。

标签: java variables syntax


【解决方案1】:

是的,他们可以使用相同的名称。但是,要引用实例变量,您需要使用this 前缀:

public Test(int var1) {
    this.var1 = var1;
}

【讨论】:

  • 所以“this”通常是可选的?但在这种情况下,我需要它,因为名称冲突?我理解正确吗?
  • 在这种情况下,您不需要它因为名称冲突,您需要它告诉 JVM 从不同(特定)范围获取引用。 “极好的。”工作方式类似,但从您正在扩展的类中获取变量/方法(甚至“更大”的范围)。有些语言甚至会提供“全球性”。类型修饰符,但不是 Java。
  • @Dolph - 很好的解释。它会很高兴地使用var1 = var1 编译和运行,稍后你会得到一个你没想到的 0 值,或者如果var1 是一个对象,你会得到一个NullPointerException
【解决方案2】:

是的,我们可以。但只是“可以”。这不好。

【讨论】:

  • -1 “这不好”没有帮助。此外,还有一些常见的模式,其中这个 是“好”的。
  • 不知道你的回答是什么意思?
【解决方案3】:

可以,但是局部变量会隐藏类变量。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-10-22
    相关资源
    最近更新 更多