如何在外部类构造函数中创建内部类的实例



我从C++切换到Java,并且嵌套类有问题。我想在超类的构造函数中启动子类的实例。我试过这样,但似乎错了。

public class Aircraft {
    public class LandingGear {
    }
    public Aircraft() {
        Aircraft.LandingGear myLandingGear = this.new LandingGear();
    }
}

这个想法是,飞机类的每个实例都有一个子类着陆架的实例"myLandingGear"。

对于这个用例,你的嵌套类应该是static的(如果它要嵌套的话),然后你只需要使用一个简单的new

public class Aircraft {
    public static class LandingGear {
    // ----^
    }
    public Aircraft() {
        Aircraft.LandingGear myLandingGear = new LandingGear();
    // --------------------------------------^^^^
    }
}

当它不是静态的时,它是一个内部类,从你的描述来看,这不是你想要的。有关嵌套类的更多信息,请参阅此 Java 教程。

但是,除非有很好的理由将LandingGear嵌套在Aircraft中,否则请考虑将其设置为对等体。

每架飞机都有一个着陆架

public class Aircraft {
    private LandingGear myLandingGear;

    public Aircraft() {
        myLandingGear = new LandingGear();
   }
   public LandingGear getLandingGear() {
       return this.myLandingGear;
   }
}
public class Aircraft {
    public class LandingGear {
        public static void m1()
        {
         //Your code snipet
        }     
    }
    public Aircraft() {
       LandingGear.m1();
    }
}

最新更新