【问题标题】:Creating an instance of static nested class创建静态嵌套类的实例
【发布时间】: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


【解决方案1】:

因为你可以import xyz.ObjectBuilder.GeneratedData,然后在课堂上使用GeneratedData

【讨论】:

  • 好的,我在 mallet 类的代码顶部看到了这一点。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-03-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-02
  • 2011-10-23
  • 2021-09-14
相关资源
最近更新 更多