如果这在某处有答案,请原谅我;我真的不知道要搜索什么...此外,我的术语可能不正确(声明、实例化等),因为我仍在学习 Java 和 OOP。
我正在阅读教科书:数据结构和抽象,弗兰克卡拉诺的第三版(第 20 章:字典实现),我遇到了一个包含私有内部类的非常标准的类。但是我不太了解这种方法。
我很难理解为什么要将对象(或对象数组)声明为外部类中的字段,然后在构造函数中,实例化一个临时对象并将该字段初始化为临时对象,而不仅仅是实例化属性本身在构造函数中。
编辑:我将类型参数添加回代码中......在这种情况下,K & V 用于键和值,因为我们正在使用字典。我不知道这对这个问题是否重要......
我在这里重写了有问题的代码,重命名了类等,因此它们没有那么本地化:
public class OuterClass<K, V> implements SomeInterface<K, V>
{
private InnerClass<K, V>[] foo; // Declare array of inner class object
private final static int CAPACITY = 10; // Initial Array Capacity
// Outer Class Constructor
public OuterClass()
{
InnerClass<K, V>[] tempFoo = (InnerClass<K, V>[])new InnerClass[CAPACITY];
foo = tempFoo;
}
// ...
private class InnerClass<S, T>
{
// Inner Class Constructor
private InnerClass()
{
// ...
}
// ...
}
}
如前所述,我试图摆脱代码中的任何具体细节,因为我认为它们与问题无关。有什么理由不只是在外部类构造函数中这样做:
foo = (InnerClass[])new InnerClass[CAPACITY];
代替:
InnerClass[] tempFoo = (InnerClass[])new InnerClass[CAPACITY];
foo = tempFoo;