java - 比较java中不同类型的数组大小
问题描述
所以我想创建一个方法来验证两个数组的长度是否相同,例如:
validateSameSize(Object[] first, Object[] second) {
if (first.length != second.length) throw new Exception();
}
问题是这种方法只适用于非原始数组。如果我想将char
-Array 与另一个数组进行比较,这是行不通的。有没有办法在没有太多开销的情况下实现这个功能?
我已经试过了
<T,V> validateSameSize(T[] first, V[] second)
但是由于泛型也需要一个类并且不适用于原始类型,所以这不起作用。还
validateSameSize(Array first, Array second)
也不起作用
解决方案
您可以使用Array#getLength
:
public static boolean sameSize(Object arrayA, Object arrayB) {
return Array.getLength(arrayA) == Array.getLength(arrayB);
}
它将适用于非原始数组以及原始数组:
System.out.println(sameSize(new int[0], new int[100])); // false
System.out.println(sameSize(new char[0], new int[0])); // true
System.out.println(sameSize(new Object[0], new Object[0])); // true
System.out.println(sameSize(new Object[0], new List[0])); // true
也不要忘记传递一个Object
不是数组Array#getLength
的IllegalArgumentException
.
这段代码:
Object notArray = 100;
System.out.println(Array.getLength(notArray));
产生:
Exception in thread "main" java.lang.IllegalArgumentException: Argument is not an array
如果您需要在调用之前快速失败,Array#getLength
您可以检查参数是否实际上是数组:
if (!object.getClass().isArray()) {
// object is not array. Do something with it
}
推荐阅读
- python - 如何在 Python 中注释 `apply` 的类型?
- java - 如何解决 java.lang.RuntimeException:P3D 渲染器不在类路径中。从 Eclipse 运行处理时?
- python - 使用 Simple JWT 时如何将自定义序列化程序添加到 Djoser 令牌字段?
- java - 如何创建 i = 0 的 for 循环
- python - Soup 不会下载 HTML Python 中的所有内容
- python - Python:每个项目匹配问题的字典
- python - 如何让 pygame.MOUSEBUTTONDOWN 每次点击只运行一次?
- swift - 如何在登录页面的 alamofire 中为“错误”设置标识符
- unit-testing - 如何在单参数化测试方法中断言真假
- github-pages - 检索多个策划的 github 存储库