以下代码是正确的:
public Sample mOboeSamples[] = { new Sample(1,1), new Sample(1,2) };
public Sample mGuitarSamples[] = { new Sample(1,1), new Sample(1,2) };
public SampleSet mSampleSet[] = {
new SampleSet( "oboe", mOboeSamples ),
new SampleSet( "guitar", mGuitarSamples)
};
但是我想写一些类似的东西:
public SampleSet mSampleSet[] = {
new SampleSet( "oboe", { new Sample(1,1), new Sample(1,2) } ),
new SampleSet( "guitar", { new Sample(1,1), new Sample(1,2) } )
};
这不会编译。
我是否缺少一些语法,或者这是一种语言'功能'?
答案 0 :(得分:11)
您需要告诉它您作为参数传递的数组的类型:
public SampleSet mSampleSet[] = {
new SampleSet( "oboe", new Sample[] { new Sample(1,1), new Sample(1,2) } ),
new SampleSet( "guitar", new Sample[] { new Sample(1,1), new Sample(1,2) } )
};
没有new
表达式,大括号在语法上无效(因为它们是初始化器 - 在这种情况下 - 但你还没有说有任何东西要初始化)。
答案 1 :(得分:2)
使用varargs:
SampleSet(String name, Sample... samples) {
// exactly the same code as before should work
}
然后你可以做
new SampleSet("oboe", new Sample(1, 1), new Sample(1, 2));