无法通过 java 中的引用变量访问静态方法
Static method is not accessible through a reference variable in java
我只是想看看我是否可以使用初始化为“空”的“引用变量”通过“静态”方法访问静态变量(我知道不推荐这样做)。但我似乎根本无法访问该方法。似乎无法发现问题所在。
class Emp {
static int bank_vault;
static int getBankVaultValue(){
return bank_vault;
}
}
public class Office {
public static void main(String[] args)
{
Emp emp = null;
System.out.println(emp.); // Here I don't get getBankVaultValue method option
}
}
这只是你的IDE。您可以在那里使用 emp.getBankVaultValue()
,它会起作用。您可以通过该实例引用访问静态方法(即使它是 null
;它永远不会取消引用,因为 getBankVaultValue
是静态的)并且静态方法当然可以访问静态变量。但是您的 IDE 没有向您提供该建议,因为正如您所说,通过实例引用访问静态成员是个坏主意;对于查看代码的任何人来说,看起来您正在访问一个实例成员。 (至少,我认为这就是 IDE 没有这样做的原因。)
您清楚地意识到这是一个坏主意并且您知道如何正确地做到这一点,但是对于任何其他来到 question/answers 的人来说,正确的访问方式是通过 class 姓名,例如:
System.out.println(Emp.getBankVaultValue());
另一个 (emp.getBankVaultValue()
) 有效,但这是一个语法怪癖。
我只是想看看我是否可以使用初始化为“空”的“引用变量”通过“静态”方法访问静态变量(我知道不推荐这样做)。但我似乎根本无法访问该方法。似乎无法发现问题所在。
class Emp {
static int bank_vault;
static int getBankVaultValue(){
return bank_vault;
}
}
public class Office {
public static void main(String[] args)
{
Emp emp = null;
System.out.println(emp.); // Here I don't get getBankVaultValue method option
}
}
这只是你的IDE。您可以在那里使用 emp.getBankVaultValue()
,它会起作用。您可以通过该实例引用访问静态方法(即使它是 null
;它永远不会取消引用,因为 getBankVaultValue
是静态的)并且静态方法当然可以访问静态变量。但是您的 IDE 没有向您提供该建议,因为正如您所说,通过实例引用访问静态成员是个坏主意;对于查看代码的任何人来说,看起来您正在访问一个实例成员。 (至少,我认为这就是 IDE 没有这样做的原因。)
您清楚地意识到这是一个坏主意并且您知道如何正确地做到这一点,但是对于任何其他来到 question/answers 的人来说,正确的访问方式是通过 class 姓名,例如:
System.out.println(Emp.getBankVaultValue());
另一个 (emp.getBankVaultValue()
) 有效,但这是一个语法怪癖。