繁体   English   中英

是否可以在 Java 中有一个数组或几何图元列表?

[英]Is it possible to have an array or a list of geometric primitives in Java?

考虑使用一组原始几何形状绘制图像。 我能想到的解决方案是将项目组合成一个数组,对其进行迭代并调用draw方法:

Object[] elements = {(new Ellipse2D.Double(200, 200, 40, 40)), 
                     (new Line2D.Double(10, 10, 100, 100)), 
                     (new Rectangle2D.Double(50,50,90,90))};

for (int j=0; j<elements.length; j++){ 
g2d.draw(elements[j]);
}

如果它们都属于同一个父 class,这应该是可能的。 但我无法确认是否存在这样的 class。 您能否澄清一下这个 object class 或者可能有另一种方法来制作形状的数组/列表?

编辑:谢谢大家的及时回答::)

第一步是查看您的一种类型的 API 文档,例如Ellipse2D.Double

我们可以看到它扩展了Ellipse2D ,点击它会得到RectangularShape 这列出了(直接)子类,但Line2D不在其中。 你想要界面Shape ,你就完成了。

或者,查看Graphics2D.draw方法并观察它声明参数为Shape

您的编辑器/IDE 也可以更直接地提供此信息。

class java.awt.Graphics2D的绘制方法以java.awt.Shape接口为参数。

java.awt.Shape javadoc 包含:

所有已知的实现类:

Arc2D, Arc2D.Double, Arc2D.Float, 面积, BasicTextUI.BasicCaret, CubicCurve2D, CubicCurve2D.Double, CubicCurve2D.Float, DefaultCaret, Ellipse2D, Ellipse2D.Double, Ellipse2D.Float, GeneralPath, Line2D, Line2D.Double, Line2D.Float, Path2D, Path2D.Double, Path2D.Float, Polygon, QuadCurve2D, QuadCurve2D.Double, QuadCurve2D.Float, Rectangle, Rectangle2D, Rectangle2D.Double, Rectangle2D.Float, RectangularShape, RoundRectangle2D, RoundRectangle2D.Double, RoundRectangle2D.Float

所以以下完全符合您的需求

java.awt.Shape[] elements = {
        new Ellipse2D.Double(200, 200, 40, 40),
        new Line2D.Double(10, 10, 100, 100), 
        new Rectangle2D.Double(50, 50, 90, 90)};

编辑:修复评论添加

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM