Is it possible to pass an Objects instance type as the type parameter of a generic? Something like the following:
Object obj = new Double(3.14); //Instance type Double
//Could I do the following?
Item<obj.getInstanceType()> item = new Item<obj.getInstanceType()>(obj);
public class Item<T> {
private T item;
public Item(T item) {
this.item = item
}
public T getItem() {
return this.item;
}
}
No.. generic type should be known at compile time.
Generics are there to catch possible runtime exceptions at compile time itself.
List<Integer> list = new ArrayList<Integer>();
//..some code
String s = list.get(0); // this generates compilation error
because compiler knows that list
is meant to store only Integer
objects and assigning the value got from list to String
is definitely an error. If the generic type was determined at run-time this would have been difficult.