Fixing getGenericReturnType to recognize the GenericArrayTypeImpl and ParameterizedTy...
[jpf-core.git] / examples / Reflection.java
index 21fdd5763aad5b00d8b15b8672de93fb746237eb..b32715832912b6b30b60dc1e25510a89f5c6cb26 100644 (file)
@@ -24,13 +24,16 @@ public class Reflection {
     class SampleClass<VWXZ> {
         private String sampleField;
 
-        public Generic<Integer,String,Double,Short,Float> setSampleField(Class<VWXZ> clazz, List<String> listString, Map<Integer,String> mapString,
-                                                                         Generic<Integer,String,Double,Short,Float> test,
-                                                                         String sampleField, int one, short two, double three, Object obj) {
-            this.sampleField = sampleField;
-            return test;
+        public Class<?> setSampleField(Class<?> clazz,
+                       Class<? extends List> list, Class<? super Map> map,
+                       List<String> listString, Map<Integer,String> mapString, 
+                       Generic<Integer,String,Double,Short,Float> test, 
+                       String sampleField, int one, short two, double three, Object obj) {
+            
+                       this.sampleField = sampleField;
+            return clazz;
         }
-          
+                
           
           /*public String getSampleField() {
                  return sampleField;
@@ -61,14 +64,30 @@ public class Reflection {
          System.out.println(parameters[i]);
       }
       System.out.println();*/
-      Type superCls = Generic.class.getGenericSuperclass();
+      /*Type superCls = Generic.class.getGenericSuperclass();
       //Type superCls = String.class.getGenericSuperclass();
       System.out.println(superCls);
         System.out.println();
         Type[] interfaces = Generic.class.getGenericInterfaces();
         for (int i = 0; i < interfaces.length; i++) {
             System.out.println(interfaces[i]);
+        }*/
+      
+         Method[] methods = Class.class.getMethods();
+         Method method = null;
+      for(Method mth : methods) {
+        //if (mth.getName().equals("getConstructor")) {
+        //if (mth.getName().equals("isAssignableFrom")) {
+        if (mth.getName().equals("getTypeParameters")) {
+           method = mth;
         }
+      }
+      Type[] parameters = method.getGenericParameterTypes();
+      //Type[] parameters = methods[0].getGenericParameterTypes();
+      for (int i = 0; i < parameters.length; i++) {
+         System.out.println(parameters[i]);
+      }
+      System.out.println();
       /*Class[] parameterTypes = methods[0].getParameterTypes();
       for(Class parameterType: parameterTypes){
          System.out.println(parameterType.getName());   
@@ -87,10 +106,10 @@ public class Reflection {
       for (Type bound : bounds) {
           System.out.println(bound);
       }
-      System.out.println();
-      Type returnType = methods[0].getGenericReturnType();
+      System.out.println();*/
+      Type returnType = method.getGenericReturnType();
       System.out.println(returnType);
-         */
+         
    }
 }