Let's imagine that we dont't know anything about Generics.
List strList = new ArrayList();
strList.add("some text");
// Even list is for string but we can add numbers
strList.add(new Integer(0));
String str = (String)strList.get(0);
// Error casting will be present (ClassCastException)
Integer i = (Integer)strList.get(0);
Here the example of code using Generics:
List<String> strList = new ArrayList<String>();
strList.add("some text");
strList.add(new Integer()); // error will be
String str = strList.get(0);
Integer i = strList.get(0); // error will be
We can use Generics for in methods:
class Hello{
public <T, K, M> T sum (K item1, M item2){
//to do
}
Also we can have two objects:
Box <Number> b1;
Box <Integer> b2;
Even though Integer extends Number these are different classes. And if we have
sum(Box<Number> b, Box<Number> c)
We can not do the next:
sum(b2, b1)
In this case we can create:
class Box<T extends Number>{
//to do
}
Then we can write:
Box<Integer> b1;
Box<Float> b2;
Box<Number> b3;
Box<String> b4; // error will be
Немає коментарів:
Дописати коментар