Java中的所有数组都实现相同的接口吗?

阿米拉尼

我想写一个方法来检查数组的大小,如果它的大小大于SIZE,我想抛出错误,但是我不知道数组的大小。

例如:

private void checkValidSize(int[] arr){
    if (arr.length > SIZE)
        throw new RuntimeException(Messages.WRONG_INPUT_ERROR);

}

如果我使用1d数组调用它,则效果很好,但不适用于2d数组。据我了解,二维数组本身就是包含数组的数组,所以我只需要一种将任何类型的数组作为参数并测量其长度的方法。

如果我知道所有数组都实现了某种类似IMesurable的接口,那么我只需要在checkValidSize中等待IMesurable。

有没有类似的东西或其他选项,所以我的函数可以在任何类型的数组上工作?

n247s

没有实现的接口或方法可用于检查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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Java-创建带有数组的按钮网格,所有按钮都具有唯一的ID

所有实现接口的对象的Java列表

所有数据都需要SharedPreferences吗?

在Java中实现接口的子类可以有自己的方法吗?

所有类的序列号都相同吗?

多维数组枚举器是否对所有实现都保证相同的顺序?

所有原始类型都实现了复制特征吗?

所有泛型类型都实现了复制特征吗?

Postgres UPSERT-如果所有数据都相同,不更新吗?

有没有一个好的方法来实现Promise.all对象的所有数组都具有promise属性?

如何循环数组A,使其所有值都具有数组B中的每个值?

所有数据都显示在一行中

如何使列表中的所有数字都变成整数

有没有一种方法可以测试数组中的所有数字是否都大于A,如果是,则用相同长度的数组替换它

如何检查数组中的所有对象是否都包含相同的键和值?

在Java多态中,是否可以将实现接口的所有类都创建为该类型接口?

如果接口和抽象类都具有相同的方法,那么哪种方法最好将所有方法都覆盖到我的Java类中?

如何找到具有相同值的所有数组?

如果数组中的所有元素都相同,如何使数组唯一,Ruby?

数组对象所有索引都具有相同的值java

unordered_map存储桶中的所有元素都具有相同的哈希值吗?

State对象中的map在所有节点上都相同吗?

PointF 数组的所有值都相同

选择所有数组值都存在于另一列中的所有行

PHP:如何使所有数组具有相同的键

为什么我的向量初始化使数组中的所有对象都相同?

检查数组中包含的所有接口是否都具有所有字段 - Angular 8

所有对象都位于 C 中的相同地址空间吗?

静态变量java - 数组列表中的所有对象都具有相同的名称?