You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

int[]参数方法调用失败,如何直接传入多个整数调用该方法?

解决方法:保留int[]参数的同时支持直接传多个数值调用

嘿,这个问题其实是Java方法调用的语法规则导致的——你定义的loadCars参数是int[]类型,但直接写loadCars(377,643,628,614)相当于试图把四个独立的int值传给一个数组参数,Java编译器不会自动帮你把它们打包成数组,所以才会无法生效。

下面给你两种不用改成四个单独int参数的解决办法:

方法1:调用时显式创建int数组

不用修改loadCars方法的定义,只需要在调用的时候手动把数值包装成数组:

loadCars(new int[]{377, 643, 628, 614});

这样编译器就能识别你要传递的是一个int数组,和方法的参数类型完全匹配,自然就能正常执行了。

方法2:使用可变参数(Varargs)兼容两种调用方式

如果你想既支持传数组,又支持直接传多个数值,可以把方法的参数改成可变参数形式。它本质上还是数组,但允许你直接传多个值,不用手动打包:

private void loadCars(int... car) {
    Json json = new Json(getApplicationContext());
    ArrayList<JSONObject> allCars;
    allCars = json.gettTodosLosJson();
    // 原有的代码完全不用改,因为car在这里就是int[]类型
    Opcion1.setCustom_Img(json.getIcono(allCars.get(car[0])));
    Opcion2.setCustom_Img(json.getIcono(allCars.get(car[1])));
    Opcion3.setCustom_Img(json.getIcono(allCars.get(car[2])));
    Opcion4.setCustom_Img(json.getIcono(allCars.get(car[3])));
}

这样之后,你既可以用loadCars(new int[]{377,643,628,614})调用,也可以直接用loadCars(377,643,628,614)调用,两种方式都能正常工作。

⚠️ 注意:因为你的代码里直接访问了car[0]到car[3],所以不管用哪种方法,都要确保调用时至少传入4个数值,否则会抛出ArrayIndexOutOfBoundsException。如果担心这个,可以在方法开头加个判断:

if (car == null || car.length < 4) {
    // 可以抛出异常、打印日志或者做其他处理
    throw new IllegalArgumentException("必须传入至少4个数值");
}

内容的提问来源于stack exchange,提问作者Gastón Saillán

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:18:15