考虑到我有以下两个嵌套类:
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
实例。
答案 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();