java - 使用可变数量的参数简化 Java 方法

标签 java methods polygon

在 java 中工作,我想简化我正在使用的绘图函数(多边形创建器)。通常,当您创建多边形时,您会这样做:

Polygon mypoly = new Polygon();
mypoly.addPoint(x1, y1);
mypoly.addPoint(x2, y2);
mypoly.addPoint(x3, y3);
Draw.fillPolygon(g, mypoly, Color.blue);

我想使用图像映射器自动给我坐标,这样我就可以将它们复制粘贴到我自己的函数中。

myCommand(x1, y1, x2, y2, x3, y3);

这些中的每一个都将进入顶部的多边形命令。我面临的问题是,当创建 mypoly 时,它如何知道要添加多少个点以及将它们放在哪里?

我试图让 myCommand 在我添加参数时自动添加点,并且每个点都与原始多边形创建方法的 x、y 相对应。

最佳答案

听起来您需要使用 builder图案。在伪代码中:

PolygonBuilder pb = new PolygonBuilder();
pb.addPoint(1,1);
pb.addPoint(1,2);
// etc...

Polygon p = pb.newPolygon();

所以我们的想法是,您为构建器提供一组点,它会为您生成合适的多边形。建筑商通常设计有 fluent interface .请注意,构建器可以像工厂一样工作,并向您返回 Polygon 的适当子类(正方形、三角形、五边形等,如果您愿意的话)。

请注意,您可以使用 Java varargs mechanism 提供一个接受可变数量参数的方法。 .例如

public void addPoints(Integer... args) {
   // and iterate here
}

您可能希望创建一个 Point 对象来一起定义 x/y 坐标。否则,上面的代码必须检查偶数个参数,并且这些参数不会捆绑在一起。

关于java - 使用可变数量的参数简化 Java 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13992148/

相关文章:

java - 使用方法打印特定的数组对象

java - getExternalStorageDirectory() 到 getExternalFilesDir()

java - CDI:使用构造函数参数手动创建 bean

javascript - getComputedStyle 对象包含方法?

java - 对方法的返回类型感到困惑

algorithm - 将 map 上的点转换为多边形

sql - 从最小和最大纬度/经度创建多边形(矩形)

python - 将一列多边形从字符串转换为 GeoPandas 几何

javascript - 根据列表中的值禁用单选查询下拉淹没-JasperServer

java - Apache Lucene中 "order of applying filters"背后的逻辑是什么