初始化包含对象数组的Java对象实例

Mar*_*ark 3 java arrays initialization object

以下代码是正确的:

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)
        };
Run Code Online (Sandbox Code Playgroud)

但是我想写一些类似的东西:

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) } )
        };
Run Code Online (Sandbox Code Playgroud)

这不编译.

是否有一些我缺少的语法,或者这是一种语言'功能'?

T.J*_*der 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) } )
};
Run Code Online (Sandbox Code Playgroud)

没有new表达式,大括号在语法上是无效的(因为它们是初始化器 - 在这种情况下 - 但你没有说有任何东西可以初始化).