【问题标题】:java static keywordjava静态关键字
【发布时间】:2011-10-25 01:59:12
【问题描述】:

我知道 static 的定义,它是将变量或方法引用到类本身的关键字。这是否意味着如果我在名为calculator 的类中编写了一个名为parseInt() 的方法,在另一个名为mathProgram 的类中编写了另一个名为parseInt() 的方法,编译器Eclipse 将知道该方法parseInt() 指的是哪个类?

【问题讨论】:

    标签: java static keyword


    【解决方案1】:

    您需要通过引用它所属的类来调用静态方法:

    MathProgram.parseInt();
    

    不一样
    Calculator.parseInt();
    

    这样写,JVM 很清楚你指的是哪个方法。

    编辑:您也可以使用实例变量调用静态方法,但这是错误的形式,应该避免。有关更多信息,请参阅this SO 答案。

    Edit2:这是Java Codding Conventions 部分的链接,该部分有关从实例变量调用静态方法的使用。 (感谢Ray Toal 提供question posted here 答案中留下的链接)

    【讨论】:

    • 是的,但那是错误的形式,是吗?
    • 希望如此,但为了完整起见,必须提出。
    【解决方案2】:

    是的,因为静态方法和变量必须在一个类中,并且要在该类之外调用它们,您需要对它们进行限定。

    例如Calculator.parseInt()OtherClass.parseInt()

    Eclipse 使用它来区分它们。

    【讨论】:

    • Java 使用它来区分它们。
    • Eclipse 使用 Java 来区分它们。
    • Java 使用类名来区分它们。 Eclipse 与它无关。无论 Eclipse 是否存在,该程序都以相同的方式编译和执行, Eclipse 特性。
    • 对,但问题是 Eclipse 如何知道差异所以我想我会保持简单。
    【解决方案3】:

    如果方法是静态的,则需要使用类名来调用它

    Calculator.parseInt();
    

    否则,有实例

    Calculator c = new Calculator();
    c.parseInt();
    

    无论哪种方式,你想要的都是明确的

    【讨论】:

    • 虽然使用实例(即c.parseInt())调用静态方法通常被认为是不好的做法。
    • 答案是如果它是静态的,使用类名。如果不是静态的,请使用实例。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-11
    • 2014-04-16
    • 2011-12-10
    • 2022-10-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多