I am trying to understand the concept of Generics in java. In the introduction to Generic Types, this example is given:
Java Code:
public class Box {
private Object object;
public void set(Object object) { this.object = object; }
public Object get() { return object; }
}
"Since Since its methods accept or return an Object, you are free to pass in whatever you want, provided that it is not one of the primitive types." - I understand this.
But then it has been changed to a generic class:
Java Code:
/**
* Generic version of the Box class.
* @param <T> the type of the value being boxed
*/
public class Box<T> {
// T stands for "Type"
private T t;
public void set(T t) { this.t = t; }
public T get() { return t; }
}
"As you can see, all occurrences of Object are replaced by T. A type variable can be any non-primitive type you specify: any class type, any interface type, any array type, or even another type variable."
We can use any type in place of an Object, because Object is a superclass of all classes. But T (or any other class) is not a superclass of all classes. So how do we justify any class being used in place of a random T or any other class?
Thank you in advance.
No comments:
Post a Comment