提问人:Creepabob 提问时间:1/29/2023 更新时间:1/29/2023 访问量:34
Java 获取动态大小的 Object 数组并将其转换为单个参数
Java take Object array of dynamic size and convert it to individual parameters
问:
我现在正在过度设计一个照片项目,并试图使使用滤镜将更多图像添加到图像拼贴中变得非常容易。我有一个包含所有图片的 2D 数组,一个包含所有要调用的方法的 2D 数组,以及一个 Objects 的 3D 数组。我使用了一个 3D 对象数组来表示参数,因为每种方法都有不同数量的参数和不同的类型(即 int、color 等)。现在,我能够传递参数,但它的上限为三个,为了增加这个数字,我必须硬编码更多的if语句。我的代码如下:
for (int row = 0; row < pictures.length; row++)
{
for (int col = 0; col < pictures[row].length; col++)
{
Picture current = pictures[row][col];
Method m = methods[row][col];
Object[] p = parameters[row][col];
int numOfParameters = p.length;
if (numOfParameters == 0)
m.invoke(current);
else if (numOfParameters == 1)
m.invoke(current, p[0]);
else if (numOfParameters == 2)
m.invoke(current, p[0], p[1]);
else if (numOfParameters == 3)
m.invoke(current, p[0], p[1], p[2]);
canvas.cropAndCopy(current, 0, height, 0, width, height * row, width * col);
}
}
有没有可能做这样的事情
m.invoke(currentPicture, unpack(p));
以这样的方式,它等于这个
m.invoke(currentPicture);
这
m.invoke(currentPicture, param1);
这
m.invoke(currentPicture, param1, param2);
等取决于阵列的大小 或者让它自动调整到参数数量的东西?
我基本上到处都搜索以找到答案,但我唯一看到的是 varargs,这不是我要找的,我需要一种方法来发送一个参数,但将其“解包”为 n 个参数,其中 n 表示数组的大小
答: 暂无答案
评论
m.invoke(current, p)