nativist.bill.cutting
nativist.bill.cutting

Reputation: 1392

How to initialize an array of objects?

I just looked at this SO Post:

However, the Columbia professor's notes does it the way below. See page 9.

Foo foos = new Foo[12] ;

Which way is correct? They seem to say different things.

Particularly, in the notes version there isn't [].

Upvotes: 5

Views: 33918

Answers (5)

alex.b
alex.b

Reputation: 1528

//declaring array of 12 Foo elements in Java8 style
Foo[] foos = Stream.generate(Foo::new).limit(12).toArray(Foo[]::new);

// instead of
Foo[] foos = new Foo[12];
for(int i=0;i<12;i++){
   foos[i] = new Foo();

}

Upvotes: 0

KhAn SaAb
KhAn SaAb

Reputation: 5376

Declare by this way.

Foo[] foos = new Foo[12];

Upvotes: 0

Erik Kaplun
Erik Kaplun

Reputation: 38257

This simply won't compile in Java (because you're assigning a value of an array type to a variable of a the non-array type Foo):

Foo foos = new Foo[12];

it's rejected by javac with the following error (See also: http://ideone.com/0jh9YE):

test.java:5: error: incompatible types
        Foo foos = new Foo[12];

To have it compile, declare foo to be of type Foo[] and then just loop over it:

Foo[] foo = new Foo[12];  # <<<<<<<<<

for (int i = 0; i < 12; i += 1) {
    foos[i] = new Foo();
}

Upvotes: 7

Roman C
Roman C

Reputation: 1

You can't do this

Foo foos = new Foo[12] ;

change to

Foo[] foos = new Foo[12];

there was a typo in the document on page 9. Also there's a typo on page 10

int[] grades = new int[3]

I would not read the whole document if the typos are on each page.

Upvotes: 1

Prabhakaran Ramaswamy
Prabhakaran Ramaswamy

Reputation: 26084

Foo[] foos = new Foo[12] ; //declaring array 

for(int i=0;i<12;i++){
   foos[i] = new Foo();  //initializing the array with foo object

}

Upvotes: 1

Related Questions