我只是想看看我是否可以使用初始化为“ null”的“引用变量”通过“ static”方法访问静态变量(我不建议这样做)。但是我似乎根本无法访问该方法。似乎无法发现问题所在。
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
是静态的,所以它从未取消引用),并且该静态方法当然可以访问static变量。但是您的IDE并没有为您提供建议,因为正如您所说,通过实例引用访问静态成员是个坏主意。对于任何查看代码的人来说,似乎您正在访问实例成员。 (至少,我认为这就是IDE不这样做的原因。)
您清楚地知道这是一个坏主意,并且知道如何正确地进行操作,但是对于任何其他提出问题的人,正确的访问方式是通过类名进行,例如:
System.out.println(Emp.getBankVaultValue());
另一个(
emp.getBankVaultValue()
)可以工作,但这是语法上的怪癖。