package generics; import java.lang.reflect.Method; import java.lang.reflect.Modifier; import java.lang.reflect.Type; interface BridgeExpl { public T meth(T pPar); } class BridgeExplString implements BridgeExpl { public String meth(String pPar) { return pPar; }; } class BridgeExplTest { public static void main(String[] args) { BridgeExpl expl = new BridgeExplString(); expl.meth(new Integer(4711)); //reflect(); } /* Session-Log: $ javac generics/BridgeExplTest.java Note: generics/BridgeExplTest.java uses unchecked or unsafe operations. Note: Recompile with -Xlint:unchecked for details. $ javac -Xlint generics/BridgeExplTest.java generics/BridgeExplTest.java:18: warning: [unchecked] unchecked call to meth(T) as a member of the raw type generics.BridgeExpl expl.meth(new Integer(4711)); ^ 1 warning $ java generics.BridgeExplTest Exception in thread "main" java.lang.ClassCastException: java.lang.Integer at generics.BridgeExplString.meth(BridgeExplTest.java:7) at generics.BridgeExplTest.main(BridgeExplTest.java:18) $ javap generics.BridgeExplString Compiled from "BridgeExplTest.java" class generics.BridgeExplString extends java.lang.Object implements generics.Bri dgeExpl{ generics.BridgeExplString(); public java.lang.String meth(java.lang.String); public java.lang.Object meth(java.lang.Object); } */ static void reflect() { BridgeExpl expl = new BridgeExplString(); Method[] methods = expl.getClass().getDeclaredMethods(); for (Method m: methods) { System.out.print(m); if (m.isBridge()) { System.out.print(" : BRIDGE !"); } System.out.print('\n'); } } /* Session-Log: public java.lang.String generics.BridgeExplString.meth(java.lang.String) public volatile java.lang.Object generics.BridgeExplString.meth(java.lang.Object) : BRIDGE ! */ }