我相信每当你创建一个静态嵌套类的实例时,它应该是这样的:
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);
}
}