views:

186

answers:

3

The following code is correct:

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)
        };

but I'd like to write something like:

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) } )
        };

This does not compile.

Is there some bit of syntax I'm missing, or is this a language 'feature'?

+6  A: 

You need to tell it the type of the arrays you're passing as parameters:

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) } )
};

Without the new expression, the braces aren't valid syntactically (because they're initializers -- in this case -- but you haven't said there's anything there to initialize).

T.J. Crowder
+2  A: 

Use varargs:

 SampleSet(String name, Sample... samples) {
    // exactly the same code as before should work
 }

Then you can do

 new SampleSet("oboe", new Sample(1, 1), new Sample(1, 2));
polygenelubricants