class Bar{};这个移动到最外面。

解决方案 »

  1.   

    或者            加   static 
    如  static  class Bar{};
      

  2.   

    你的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());
        }
    我也是新手,希望没有答错。。
      

  3.   

    静态调用 。
    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 {
    };
      

  4.   

    //return new Foo(new Bar());既然Bar是Foo的一个成员,当然要用实例.成员名来访问。
    但你这样写,Foo都还没有创造出来,哪里来的Foo实例.new Bar()。建议添加一个默认构造函数  public Foo(){}
    然后return new Foo(new Foo().new Bar());