2

考虑到我有以下两个嵌套类:

public class Foo {

    public class Bar {

    }

}

我的目标是创建一个 class 实例Bar。我尝试通过以下方式做到这一点:

// Method one
Foo fooInstance = new Foo();
Foo.Bar barInstance = new fooInstance.Bar // fooInstance cannot be resolved to a type

// Method two
Foo.Bar barInstance = new Foo.Bar(); // No enclosing instance of type Foo is accessible

任何帮助将不胜感激,我被困住了。您可能会注意到,我是一名 Java 初学者:这不会自动将其作为家庭作业问题(事实上 - 它不是)。

如何创建Bar类的实例?最好是同一个Foo实例。

4

4 回答 4

4

关。而是写:

Foo.Bar barInstance = fooInstance.new Bar();
于 2012-08-23T20:36:21.840 回答
3

这里:

Foo.Bar barInstance = new fooInstance.Bar // fooInstance cannot be resolved to a type

您尝试实例化一个不存在的类型(fooInstance 只是一个变量)

正确的做法是,正如解释的那样:

Foo.Bar barInstance = new Foo().new Bar()

这里:

Foo.Bar barInstance = new Foo.Bar(); // No enclosing instance of type Foo is accessible

这仅对 Foo 的静态内部类有效。因此,如果这符合您的需要,请将 Boo 设为 Foo 的静态内部类

于 2012-08-23T20:41:37.720 回答
2

您必须创建内部类的对象,例如:

Foo.Bar barObj = new Foo().new Bar();

如果内部类是静态的,那么您可以直接将它们创建为:

public class Foo {    
    static public class Bar {    
    }    
} 


Foo.Bar b = new Foo.Bar();
于 2012-08-23T20:37:09.703 回答
0

它应该是

Foo.Bar barInstance = new Foo().new Bar();
于 2012-08-23T20:38:14.280 回答