А, сорри, виноват. Должно быть так | Код | public abstract class A<T> { private Class<T> myClassType;
public A() { this.myClassType = (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()) .getActualTypeArguments()[0]; }
public void f() { if (myClassType.equals(String.class)) { System.out.println("I'm String"); } else { System.out.println("Other type"); } } }
|
| Код | public class B extends A<String>{ }
|
| Код | public static void main(String[] args) { new B().f(); }
|
Ну, наверное, это не по теме будет... Хотя действительно, зачем делать проверку на подобие
| Цитата | if(E extends A){ do1(); }else{ do2(); }
|
Если лучше понаписывать наследников конкретного типа и реализовать их специфическую логику в методе
Это исходит из рефакторинга предложенного Мартином Фаулером: замена условных выражений иерархией. |