我是 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)
。然后通过public
或protected
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/