, . , . ( ). :
abstract public class MyTemplate<T> {
abstract public void doSomething(T t);
}
public class MyTemplateImpl extends MyTemplate<Object> {
@Override
public void doSomething(Object o) {
System.out.println("Dealing with a generic Object");
}
}
public class MyTemplateImplForStrings extends MyTemplate<String> {
@Override
public void doSomething(String s) {
System.out.println("dealing with a String");
}
}
, :
MyTemplateImplForStrings template = new MyTemplateImplForStrings();
template.doSomething("hello");
MyTemplate<String> template = new MyTemplateImplForStrings();
template.doSomething("hello");
: , String; ClassCastExceptions , .