package com.litesuits.orm.test;
import java.lang.reflect.ParameterizedType;
import java.lang.reflect.Type;
import java.util.Arrays;
/**
* @author MaTianyu
* @date 2015-03-22
*/
public class TestGeneric {
public static void main(String[] args) {
System.out.println("".getClass());
System.out.println(byte.class);
System.out.println(int.class);
System.out.println(byte[].class);
System.out.println(int[].class);
System.out.println(Integer[].class);
System.out.println(Integer.class);
B<C> b = new B<C>(C.class);
System.out.println(b.a().c());
}
static abstract class A<T> {
public abstract T a();
}
static class B<T> extends A<T> {
Class<T> claxx;
B(Class<T> claxx) {
this.claxx = claxx;
}
@Override
public T a() {
Type[] ts = getClass().getGenericInterfaces();
Type t = getClass().getGenericSuperclass();
System.out.println(Arrays.toString(ts));
System.out.println(t);
ts = ((ParameterizedType) t).getActualTypeArguments();
t = ts[0];
System.out.println(Arrays.toString(ts));
System.out.println(t);
ts = claxx.getGenericInterfaces();
t = claxx.getGenericSuperclass();
System.out.println(Arrays.toString(ts));
System.out.println(t);
//System.out.println();
try {
return claxx.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
return null;
}
}
static class C {
public String c() {
System.out.println("CCC");
return "hello C";
}
}
}