I am trying to understand why the following is not compiling.
public class AnimalHolder<T super Animal> {
T animal;
public static void main(String[] args) {
AnimalHolder<Object> objectHolder = new AnimalHolder<Object>();
}
}
As I understand I can use anything that IS
A
Animal
or super type of Animal
(in this case Object
). Can any one explain?
Compiler Message:
AnimalHolder.java:15: error: > expected
public class AnimalHolder<T super Animal> {
^
AnimalHolder.java:15: error: <identifier> expected
public class AnimalHolder<T super Animal> {
^
AnimalHolder.java:17: error: illegal start of expression
public static void main(String[] args) {
^
AnimalHolder.java:17: error: illegal start of expression
public static void main(String[] args) {
^
AnimalHolder.java:17: error: ';' expected
public static void main(String[] args) {
^
AnimalHolder.java:17: error: '.class' expected
public static void main(String[] args) {
^
AnimalHolder.java:17: error: ';' expected
public static void main(String[] args) {
^
AnimalHolder.java:21: error: reached end of file while parsing
}
^
8 errors