【发布时间】:2013-11-10 22:35:47
【问题描述】:
我相信,无论何时创建静态嵌套类的实例,它都应该是这样的:
Outerclass.StaticNestedClass myObject = new Outerclass.StaticNestedClass();
下面的这段代码(我省略了一些我认为在这里不相关的代码)不使用封闭的类名。 GeneratedData 是 ObjectBuilder 类的静态嵌套类。为什么我看不到:
ObjectBuilder.GeneratedData = ObjectBuilder.createMallet()
取而代之的是:
GeneratedData generatedData = ObjectBuilder.createMallet();
这里是java文件...
public class Mallet {
public Mallet(float radius, float height, int numPointsAroundMallet) {
GeneratedData generatedData = ObjectBuilder.createMallet(new Point(0f,
0f, 0f), radius, height, numPointsAroundMallet);
// lots of code omitted
}
}
这里是定义静态嵌套类的类。如您所见,方法 createMallet() 创建了一个 GeneratedData 类型的对象,并且上面的 Mallet 类使用该方法而不是构造函数。
class ObjectBuilder {
static interface DrawCommand {
void draw();
}
static class GeneratedData {
final float[] vertexData;
final List<DrawCommand> drawList;
GeneratedData(float[] vertexData, List<DrawCommand> drawList) {
this.vertexData = vertexData;
this.drawList = drawList;
}
}
static GeneratedData createMallet(
// lots of code omitted
return builder.build();
}
private final float[] vertexData;
private ObjectBuilder(int sizeInVertices) {
vertexData = new float[sizeInVertices * FLOATS_PER_VERTEX];
}
private GeneratedData build() {
return new GeneratedData(vertexData, drawList);
}
}
【问题讨论】:
-
问题是什么?另外,请在标签中指定您使用的语言(Java?C#?)。
-
抱歉,我希望我现在做得更好了吗?基本上我正在看的教科书使用的静态嵌套类与我在 Oracle 网站上看到的不同,我不知道为什么。
标签: java nested-class