好的,我有以下代码:
Foo f = new Foo (
new Bar[] {
new Bar(),
new Bar(),
new Bar()
}, new Bar()
};
Foo
的构造函数:
Bar[] barArr = new Bar[];
Bar barLoc;
Foo(Bar[] arr, Bar b)
{
barArr = arr;
barLoc = b;
}
Bar
的构造函数:
int x = 3;
int y = 7;
int z = 0;
Bar () { }
根据我的理解,这应该是完全正确和不言自明的。但是,在Bar[]
构造函数完成后,我的调试器会告诉我Bar[]
仅包含null
个对象。使用断点,输出等,我通过构造函数跟踪程序并确认Bar()
完全正常工作,这得到了程序中其他位置Bar()
的调用如何按预期运行的支持。我还使用已构造的Foo(Bar[], Obj)
对象确认了Bar()
的相同内容。
我想尽可能避免这样做,因为我需要构造>这些东西中的30个,其中大多数需要每个构造函数的唯一参数集 - 使用每个构造函数的命名变量将是可读性的噩梦。
值得注意的是,我正在一个班级中直接构建这些对象(不要记住这个对象的特定术语),而不是在一个方法中。
这让我怀疑我误解了这种东西在Java中的作用(我更习惯于C ++,你看)。有人可以对这个问题有所了解吗?
我正在使用ADT并开发Android 4.3。
答案 0 :(得分:0)
这是一个基于您提供的信息(我已修复语法错误)的最小但完整的示例,该示例显示数组具有非null元素。因此,您的问题出现在您目前尚未展示的代码的其他部分。
打印package.name.Test$Bar@15db9742
。
public static void main(String[] args) throws Exception {
Foo f = new Foo(
new Bar[]{
new Bar(),
new Bar(),
new Bar()
}, new Bar());
System.out.println(f.barArr[0]);
}
static class Bar {
int x = 3;
int y = 7;
int z = 0;
}
static class Foo {
Bar[] barArr;
Bar barLoc;
Foo(Bar[] arr, Bar b) {
barArr = arr;
barLoc = b;
}
}