超全模态模型 × Harness 升级,升级解锁 ArkClaw,最新支持 DeepSeek-V4 系列与 GLM-5.1
你直接执行int d = vector.get(i)报错,是因为Vector<Object>中存储的是数值包装类对象(比如Integer、Long),而非基本类型int。Java不允许直接将Object强制转换为基本类型,必须先转为对应的包装类,再转成int。
int d = vector.get(i)
Vector<Object>
Integer
Long
int
Object
这是最常见的场景,直接将Object强转为Integer后,会自动拆箱为int:
Vector<Object> vector = new Vector<>(); vector.add(1); vector.add(4); vector.add(7); for (int i = 0; i < vector.size(); i++) { // 先转成Integer,再自动拆箱为int int num = (Integer) vector.get(i); if (num % 2 != 0) { System.out.println(num); } }
如果容器里可能存在其他数值包装类,需要先判断类型再转换,避免ClassCastException:
ClassCastException
Vector<Object> vector = new Vector<>(); vector.add(2); vector.add(5L); vector.add(9.0); for (Object obj : vector) { int num; // 先判断对象类型,再转换为int if (obj instanceof Integer) { num = (Integer) obj; } else if (obj instanceof Long) { num = ((Long) obj).intValue(); } else if (obj instanceof Double) { // 注意:Double转int会丢弃小数部分,按需处理 num = ((Double) obj).intValue(); } else { // 非数值类型,跳过处理 continue; } if (num % 2 != 0) { System.out.println(num); } }
如果一开始就确定要存储整数,直接使用Vector<Integer>,代码更安全简洁,无需强制转换:
Vector<Integer>
Vector<Integer> vector = new Vector<>(); vector.add(3); vector.add(6); vector.add(9); // 增强for循环直接遍历int类型 for (int num : vector) { if (num % 2 != 0) { System.out.println(num); } }
Vector
instanceof
内容的提问来源于stack exchange,提问作者edgeworth miles
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起
模型再升级,30秒超长叙事, 模态参考扩容
模型自由,工具不限,最新支持 Deepseek-V4 系列、GLM-5.3 系列
超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列
大模型19元起,Al应用9.9元畅享,新人首购爆款尽享优惠