在类中创建类的实例

时间:2012-08-23 20:35:20

标签: java oop class

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

public class Foo {

    public class Bar {

    }

}

我的目标是创建一个类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 个答案:

答案 0 :(得分:4)

关闭。而是写:

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

答案 1 :(得分: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的静态内部类

答案 2 :(得分:2)

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

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

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

public class Foo {    
    static public class Bar {    
    }    
} 


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

答案 3 :(得分:0)

应该是

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