我有一个由静态方法组成的类。他们需要使用另一个类的对象。
说
class A{
B obj = new B();
public static void method()
{
//using obj here
}
}
在这里声明static B obj = new obj()
正确的做法?
答案 0 :(得分:2)
声明静态B obj = new obj(),这是正确的方法吗?
是的,如果你在静态方法中使用obj。而且,这是在方法中访问obj的唯一方法。
您无法访问A类对象的A类实例字段
答案 1 :(得分:2)
只需更改这样的声明就可以了:
class A {
private static B obj = new B();
public static void method() {
System.out.println(obj);
}
}
class B {}
答案 2 :(得分:1)
是。这是对的。
class A{
static B obj = new B();
public static void method()
{
// now you can use obj here.
}
}
答案 3 :(得分:1)
如果您未将obj
声明为static
成员,则无法在static
方法中使用它们
答案 4 :(得分:0)
声明静态B obj = new obj(),这是正确的方法吗?
这确实解决了你的问题(见下文)。 是否正确的方法取决于您想要给予该字段的含义。
A
的实例的情况下存在它是有意义的,那么确定它static
是正确的方法。A
的对象(A
的实例)有意义,那么它不应该是{{1} }(因此,是static
字段)。在这种情况下:
instance
关键字排序&#34; 我在此声明的内容并不依赖于此类的实例,而只取决于类本身&#34;。< / p>
这就是static
方法无法访问实例字段(非静态字段)的原因。该方法可以通过static
调用,但该字段不存在而没有创建实例A.method()
,因此该方法显然不能使用它。
如果该字段被声明为new A()
,则可以访问该字段,因为它也独立于实例。