java 构造函数的数组固定元素

标签 java arrays constructor setter custom-exceptions

我正在用 java 编写我的第一个类。

我创建了一个带有 int[] 的类,该类必须用 3 个元素进行声明。

public abstract class MyClass {
   private String name;
   private int[] myValues = new int[2];

现在我的问题是:

  1. 确保用户必须插入每个成员的最佳方法是什么?

然后.. 构造函数是实现此目的的最佳方法,因此我使用明确需要的每个元素来创建构造函数:

public MyClass(String nam, int val0, int val1, int val2){
   int[] values = new int[]{val0, val1, val2};
   setMyValues(values);
}

private void setMyValues(int[] vals){
   this.myValues = vals;
}
  1. 这是一个好的做法吗?似乎很复杂,而不是给出一个简单的数组:

    public void MyClass(int[] vals)..
    

    但这样我就无法确定元素的数量。我应该创建一个自定义异常或一个 if(vals.length != 2) cicle..

我还有一些疑问:

  • 声明 myValues = new int[2] 有用,还是直接写 int[] myValues 也一样? (为什么要声明内部状态的元素数量?)

  • 最好从构造函数接收参数或将 vector 传递给 setter (setMyValues(int[] vals)) 并检查 setter 中的数组?

  • 感谢您的每一个建议。

    最佳答案

    1. 你可以有一个重载的构造函数,其中包含三个整数 值和数组之一。在第一个上构建一个数组并 将其传递给数组构造函数,在第二个构造函数中调用 setter 并评估长度,如果长于三个则抛出 异常(exception)。
    2. 您正在分配一个从未使用过的对象,浪费空间,并且在分配新数组后将由 GC 收集。我不会向该属性分配任何内容。
    3. 这取决于您的方法。您可以选择第一点并添加第三个默认构造函数,然后使用 setter 方法设置数组。

    希望这有帮助。

    关于java 构造函数的数组固定元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47187090/

    相关文章:

    java - 使用反射从抽象基类访问构造函数

    c++ - 奇怪的构造函数

    c++ - 防止在 C++ 的构造函数中隐式转换数字类型

    java - 给定乘数的下一个数字倍数

    javascript 每次计算包含数组文字的表达式

    java - 如何在TestFX中测试多个场景

    arrays - 如何直接修改Julia库Flux中的权重值?

    ios - 如何使用按钮在 2 个部分之间移动单元格?

    java - (String ... args) 的值如何影响子类覆盖?

    java - NullPointerException错误问题