4

Is there any reason the fallowing code would give A compile error ?

Import java.util.*;

public class Storageclass
// class used to store the Student data 
{
 // creates the private array list needed. 
 private ArrayList<String> nameList = new ArrayList<String>();
 private ArrayList<double> GPAList = new ArrayList<double>();
 private ArrayList<double> passedList = new ArrayList<double>();
}

this is in a class access by a main file there is more in the class by it not part of this error. when I run this the two double arrayList give me this error.

Storageclass.java:8: error: unexpected type
 private ArrayList<double> GPAList = new ArrayList<double>(1);
                   ^
  required: reference
  found:    double

I am not sure why or what that error means any help would be appreciated.

~ Thanks for the help was a embarrassingly novice mistake I made, but hope full this can help some other person.

user2736640
  • 41
  • 1
  • 1
  • 3

4 Answers4

7

Since all generic types <T> are erased at runtime to Object every type you put in place of T must also extend Object. So you can't set T to be primitive type like double but you can use its wrapper class Double. Try this way:

private List<Double> passedList = new ArrayList<Double>();

or since Java7 little shorter version

private List<Double> passedList = new ArrayList<>();

Also don't worry if you try to add variable of double type to such array since it will be autoboxed to Double.

Pshemo
  • 118,400
  • 24
  • 176
  • 257
2

Primitive types cannot be used as generic type arguments. Use the wrapper type Double (or whichever is appropriate).

Sotirios Delimanolis
  • 263,859
  • 56
  • 671
  • 702
2

Use ArrayList<Double> instead of ArrayList<double>.

brettw
  • 10,094
  • 2
  • 38
  • 55
0

cant be primitive type

private ArrayList<double>

use Double

private ArrayList<Double>
Paul Samsotha
  • 197,959
  • 33
  • 457
  • 689