Using JMS which is not implemented with Generics, I decided to add some “genericity”.
The problem is that, because of type erasure, I can’t use the simple instanceof operator, the solution I used is to pass the class of the Generic when I use it:
import java.io.Serializable; public class Handler{ public Handler() { super(); } private Class clazz; public Handler(Class clazz) { super(); this.clazz = clazz; } public T extract(Object o) { if (!(o.getClass().isAssignableFrom(clazz))) throw new RuntimeException("explicite message"); return (T) o; } public static void main(String[] args) { Handler handler = new Handler (String.class); System.out.println(handler.extract(new Integer("11")));//This throw an Exception System.out.println(handler.extract(new Integer("11")));//This is ok } }
Now it works, but I will try to find a more elegant solution to avoid the clazz parameter.