gpt4 book ai didi

java - 如何判断obj可以在for循环中使用

转载 作者:行者123 更新时间:2023-12-01 12:21:51 24 4
gpt4 key购买 nike

我尝试了以下代码,但它返回 false。

package ro.idea.ex;

import java.lang.reflect.Array;
import java.util.Collection;

/**
* Created by roroco on 10/28/14.
*/
public class Ex {
public <T> boolean canWorkInForLoop(T o) {
return o instanceof Collection || o instanceof Iterable || o instanceof Array;
}

public static void main(String[] args) {
int[] arr = {1, 2};
Object r = new Ex().canWorkInForLoop(arr);
System.out.println("r:" + r + "\t\t" + new Exception().getStackTrace()[0].getFileName() + ":" + new Exception().getStackTrace()[0].getLineNumber());
}
}

我的问题是:

如何确定所有可以在for循环中使用的obj,如new int[]、ArrayList的实例和其他obj?

最佳答案

int[] 不是 Array 的实例。使用o.getClass().isArray()代替

更多信息可以在 this question 的回答中找到

此外,Collection 检查是多余的,因为它扩展了 Iterableforeach 构造适用于 Iterable > 或数组。

正如评论中所解释的,java.lang.reflect.Array是一个用于创建/访问数组的实用程序类。它不是数组的基类。
对象数组扩展了 Object[],而原始数组根据 this answer 扩展了 Object

关于java - 如何判断obj可以在for循环中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26611635/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com