java - 在Java中的构造函数中实例化不同的类

标签 java arrays class object constructor

我是 Java 的新手,刚刚开始研究简单的示例程序。

如何在 B 类的构造函数中创建 A 类的实例。例如,我想在类 B 的构造函数中创建一个类 A 的对象数组。伪代码看起来像

class B {

public static A myarray;
B (int number){
  myarray = new A [number];
}

编辑:

public class TestClassA {

    public static int []  ArrayA = new int [6];
    TestClassA () {
        for (int i=0; i < 6; i++){
            ArrayA[i]=i;
            System.out.print("TestClassA ");
        }
    }
}

public class TestClassB {

    public TestClassA [] A;
    TestClassB (int num) {
        A = new TestClassA[num];
    }
}

public class Exec {

    public static void main (String[] args) {

        TestClassB B;
        B = new TestClassB(2);

    }
}

当我执行此操作时,我没有看到任何“TestClassA”消息。我希望它创建 2 个 TestClassA 数组实例,因此我应该看到 TestClassA 12 次。不确定我哪里做错了。

最佳答案

一些建议

  • 不要使用static,除非您想与类B 的每个实例共享A 对象数组。
  • 然而,您确实需要在声明引用时使用 [] 以指示它是一个 Array
  • 也将您的成员(member)字段设为私有(private)。然后通过 publicprotected getter/setter 方法控制对它们的访问。

你的代码应该是这样的

public class B {

    private A[] arrayOfAobjects;

    B (int number) {
         arrayOfAobjects = new A[number];
    }

    public A[] getArrayOfAobjects() {
        return arrayOfAobjects;
    }
}

编辑:(在下面详细说明@MikeStrobel 的评论)
当您创建一个数组时,它会根据 Array 的类型使用默认值进行初始化。例如,对于 int [],每个数组元素都设置为 0,对于 double [],每个数组元素都设置为 0.0 , null 用于所有类型的 Object [] 对象数组。

new int[100]; // creates an Array with 100 zeroes
new A[number]; // creates an Array of size "number"
               // but filled with nulls (instead of A objects)

因此,您需要自己用正确的值填充数组。在你的情况下,像

B (int number) {
     arrayOfAobjects = new A[number];
     for (int i=0; i < number; i++) {
         arrayOfAobjects[i] = new A(); // initialize the A[] array
     }
}

编辑 2:

public class TestClassB {

    public TestClassA [] A;

    TestClassB (int num) {
        A = new TestClassA[num];
        for (int i=0; i < num; i++) {
            A[i] = new TestClassA(); // You need to INITIALIZE your Array
        }
    }
}

关于java - 在Java中的构造函数中实例化不同的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17174032/

相关文章:

java - 如果要求用户输入整数和字母,应使用什么数据类型?

javascript - 幕后是否存在 JavaScript 中的数组/列表?

java - 包含相同接口(interface)的类实现接口(interface)

java - 如何在Java中设置和使用类,库,包?

java - 如何在 JBoss 配置中允许任何用户

Java 通用枚举作为参数

java - 如何在java中正确清除Map

C++ 数组与 vector

python - 插入排序算法修改输出

python - 创建一个没有实例的静态类