具有强制数组大小参数的 Java 方法?

标签 java class architecture

我想为接受 3 个参数的 Java 类创建一个初始化方法:

Employee[] method( String[] employeeNames, Integer[] employeeAges, float[] employeeSalaries )
{
    Employee myEmployees[] = new Employee[SIZE]; // I don't know what size is

    for ( int count = 0; count < SIZE; count++)
    {
        myEmployees[count] = new Employee( employeeNames[count], employeeAges[count], employeeSalaries[count] );
    }
    return myEmployees;
}

您可能会注意到这段代码是错误的。未定义 SIZE 变量。我的问题是我想传入 3 个数组,但我想知道我是否可以确保这三个数组都具有相同的数组大小。这样 for 循环就不会失败,因为 for 循环中的构造函数使用数组的所有参数。

也许 Java 有一个不同的特性可以强制解决我的问题。我可以接受另一个名为 SIZE 的参数,它将在 for 循环中使用,但如果参数 1 和 2 的大小为 10,而第三个参数是大小为 9 的数组,这并不能解决我的问题。

我如何强制这 3 个参数都是包含完全相同数量元素的数组?使用指定数组大小的额外参数不是很优雅而且有点脏。它也没有解决数组参数包含不同大小数组的问题。

最佳答案

你不能在编译时强制执行。您基本上必须在执行时检查它,如果不满足约束则抛出异常:

Employee[] method(String[] employeeNames,
                  Integer[] employeeAges,
                  float[] employeeSalaries)
{
    if (employeeNames == null
        || employeeAges == null 
        || employeeSalaries == null)
    {
        throw new NullPointerException();
    }
    int size = employeeNames.length;
    if (employeesAges.length != size || employeeSalaries.length != size)
    {
        throw new IllegalArgumentException
            ("Names/ages/salaries must be the same size");
    }
    ...
}

关于具有强制数组大小参数的 Java 方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/934002/

相关文章:

ruby - 为什么模块调用的 block 无法修改 Ruby 中实现类的对象?

java - 如何用自己类型的成员扩展一个类?

c# - 什么设计模式可以用来构建这个?

java - 音乐无法按一下按钮播放

java - maven-ear-plugin 项目属性查找失败

java - Primefaces 动态列,以编程方式

java - 使用 Jersey ResourceConfig 为 Swagger 设置自定义应用程序类

c++ - 更改 vector 中对象的私有(private)变量

docker - 从一个容器执行代码到另一个容器(即,从API容器在工作容器上执行脚本)

architecture - 如何设计可扩展的类似 Twitter 的服务?