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
  • 122,468
  • 25
  • 185
  • 269
2

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

Sotirios Delimanolis
  • 274,122
  • 60
  • 696
  • 724
2

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

brettw
  • 10,664
  • 2
  • 42
  • 59
0

cant be primitive type

private ArrayList<double>

use Double

private ArrayList<Double>
Paul Samsotha
  • 205,037
  • 37
  • 486
  • 720