Tony the Pony Tony the Pony - 1 year ago 43
Java Question

Java: How to set a default for "T" in SomeClass<T>?

Is there a way to specify a default type for a generic template?

Let's say I have a

Monkey
class. Monkeys can live in different
Environment
s, such as
Jungle
or
Zoo
:


public class Monkey<T extends Environment>
{
T home;
...

public T getHome()
{
return home;
}
}


Is there a way to specify a default for
T
, so I can use the type
Monkey
instead of
Monkey<?>
without getting a compiler warning?

EDIT

In other words, is there a way to get rid of the "raw type" warning without having to explicitly suppress it?

Answer Source

No, you can't do that. Generic parameters don't have default values. You could re-organize your type hierarchy so that there's a GenericMonkey and a DefaultMonkey that sets the generic parameter to your desired default.