我想写一个方法来检查数组的大小,如果它的大小大于SIZE,我想抛出错误,但是我不知道数组的大小。
例如:
private void checkValidSize(int[] arr){
if (arr.length > SIZE)
throw new RuntimeException(Messages.WRONG_INPUT_ERROR);
}
如果我使用1d数组调用它,则效果很好,但不适用于2d数组。据我了解,二维数组本身就是包含数组的数组,所以我只需要一种将任何类型的数组作为参数并测量其长度的方法。
如果我知道所有数组都实现了某种类似IMesurable的接口,那么我只需要在checkValidSize中等待IMesurable。
有没有类似的东西或其他选项,所以我的函数可以在任何类型的数组上工作?
没有实现的接口或方法可用于检查Array是否为2d Array。如果您看一下Arrays#deepEquals(),您将了解Java如何处理嵌套数组。例如,通过大量检查和投放。
因此,假设您正在寻找不包括数组本身(而不是普通的#length属性)的int总数,则需要执行“ deepLengthCheck”。像这样的东西:
public static int getDeepLength(Object array)
{
int count = 0;
if(array instanceof int[])
count += ((int[])array).length;
if(array instanceof Object[])
for(Object current : (Object[])array)
count += getNestedCount(current);
return count;
}
static int getNestedCount(Object obj)
{
if (obj instanceof Object[] )
return getDeepLength((Object[])obj);
if (obj instanceof int[] )
return ((int[])obj).length;
return 1;
}
在instanceof Object[]
需要使用嵌套的数组检查,因为阵列本身被认为是一个对象。(因此是IntArrays的数组== Objects的数组)。请注意,这绝对不是最佳解决方案,并且可能会有更好的方法。
同样,如果您使用除Integers之外的基本数据类型,则还需要检查这些类型。(Arrays#deepEquals0()概述了要检查的内容)。
如果您对有关数组以及如何在运行时创建数组的更多信息感兴趣,则本文章简要介绍了Java中数组的详细信息。
希望这是有用的!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句