为什么我必须在Java中将参数传递给带有私有访问控制的静态方法。
class Test extends Teacher
{
int field = 123;
private static void accessInstance(Test test)
{
System.out.println(test);
}
}
对于以下代码,会生成错误
private static void accessInstance()
{
System.out.println("Hi there");
}
答案 0 :(得分:0)
因为静态方法无法访问实例值,只能访问静态值。因此,如果您希望静态方法访问实例字段的值,则必须将其作为参数传递。
最后你最好考虑使方法不是静态的,这样你就可以直接从实例对象上调用它。
此外,使用上面的代码没有任何错误(至少会使其无法编译)。
答案 1 :(得分:0)
如果您的类是内部类并且不是静态的,编译器将给出错误,例如:
class X
{
class Test
{
int field = 123;
private static void accessInstance(Test test)
{
System.out.println(test);
}
}
}
如果内部类是静态的,这将起作用:
class X
{
static class Test
{
int field = 123;
private static void accessInstance(Test test)
{
System.out.println(test);
}
}
}
我认为你应该更正你的帖子。
静态内部类意味着您可以在没有封闭外部类实例的实例的情况下实例化它。
JLS 8.1.3。内部类和封闭实例
内部类可能不会声明静态成员,除非它们是常量 变量(§4.12.4),或发生编译时错误。