从外部类引用内部类实例

Boy*_*ore 0 java nested-class

我刚刚开始学习Java教程,我决定花一些时间玩嵌套类.

我制作的工作副本是一个Bicycle类,其中可以包含零个或多个Rider类实例.在Bicycle的一个实例中,我希望能够与Riders的实例一起工作.

在下面的例子中,我的Bicycle有一个ArrayList来保存它的Riders,但我想避免在可能的情况下维护这个列表.

我的问题是这个.还有另一种方法来引用骑自行车的Rider实例,还是我必须维护自己的列表?

//Outer Class contains zero or more Inner Classes
public class Bicycle {

    //ArrayList of Inner Class instances
    private List<Rider> Riders = new ArrayList<Rider>();

    class Rider {
        private String riderName;

        protected Rider(String newRiderName) {
            this.riderName = newRiderName;
        }

        protected String GetRiderName(){
            return riderName;
        }

    }

    //When creating an Outer Class, we can instantiate zero or more Inner Classes, by name
    public Bicycle(String... startingRiderName) {

        //Loop through all Inner Class instance names and create an Inner Class for each
        for (String newRiderName : startingRiderName) {
            Riders.add(new Rider(newRiderName));
        }
    }

    //Public method to return an array of Inner Class instance names
    public String[] GetRiderNames() {

        String[] riderNames = new String[Riders.size()];

        // Just in case we mess up and ask the ArrayList for an out of bounds index
        try {
            for (int riderIndex = 0; riderIndex < Riders.size(); riderIndex++) {
                riderNames[riderIndex] = Riders.get(riderIndex).GetRiderName();
            }
            return riderNames;
        } catch (IndexOutOfBoundsException e) {
            return null;
        }
    }

}
Run Code Online (Sandbox Code Playgroud)

Ted*_*opp 5

必须在某处维护一个列表,否则这些内部类实例将被垃圾收集.无论是作为成员Bicycle还是某些外部数据结构的数组都是一个设计决策,但是Java没有内部类实例保存的自动列表.