你的Bar本来就是Foo的内部类,要产生内部类的实例需要使用外部类,可你的外部类的构造又必须使用一个内部类的实例。 你可以吧内部类变成静态的,这样就可以通过外部类名得到内部类对象。改成这样: public class Foo {
static class Bar{};
Bar bar;
private Foo(Bar bar){ this.bar = bar; }
public static Foo getInstanceByFoo() { return new Foo(new Foo.Bar()); } 我也是新手,希望没有答错。。
静态调用 。 public class Foo { class Bar { }; Bar bar; private Foo(Bar bar) { this.bar = bar; } public Foo getInstanceByFoo() { return new Foo(new Bar()); } public static void main(String[] args) { // Foo f = Foo.getInstanceByFoo(); } } ------------------------- public class Foo { static class Bar { }; Bar bar; private Foo(Bar bar) { this.bar = bar; } public static Foo getInstanceByFoo() { return new Foo(new Bar()); } public static void main(String[] args) { Foo f = Foo.getInstanceByFoo(); } }-------------------------- public class Foo { Bar bar; private Foo(Bar bar) { this.bar = bar; } public static Foo getInstanceByFoo() { return new Foo(new Bar()); } public static void main(String[] args) { Foo f = Foo.getInstanceByFoo(); } }class Bar { };
//return new Foo(new Bar());既然Bar是Foo的一个成员,当然要用实例.成员名来访问。 但你这样写,Foo都还没有创造出来,哪里来的Foo实例.new Bar()。建议添加一个默认构造函数 public Foo(){} 然后return new Foo(new Foo().new Bar());
如 static class Bar{};
你可以吧内部类变成静态的,这样就可以通过外部类名得到内部类对象。改成这样:
public class Foo {
static class Bar{};
Bar bar;
private Foo(Bar bar){
this.bar = bar;
}
public static Foo getInstanceByFoo()
{
return new Foo(new Foo.Bar());
}
我也是新手,希望没有答错。。
public class Foo { class Bar {
}; Bar bar; private Foo(Bar bar) {
this.bar = bar;
} public Foo getInstanceByFoo() {
return new Foo(new Bar());
} public static void main(String[] args) { // Foo f = Foo.getInstanceByFoo();
}
}
-------------------------
public class Foo { static class Bar {
}; Bar bar; private Foo(Bar bar) {
this.bar = bar;
} public static Foo getInstanceByFoo() {
return new Foo(new Bar());
} public static void main(String[] args) { Foo f = Foo.getInstanceByFoo();
}
}--------------------------
public class Foo { Bar bar; private Foo(Bar bar) {
this.bar = bar;
} public static Foo getInstanceByFoo() {
return new Foo(new Bar());
} public static void main(String[] args) { Foo f = Foo.getInstanceByFoo();
}
}class Bar {
};
但你这样写,Foo都还没有创造出来,哪里来的Foo实例.new Bar()。建议添加一个默认构造函数 public Foo(){}
然后return new Foo(new Foo().new Bar());