package test; import java.lang.reflect.Field; import java.lang.reflect.Method; import java.util.ArrayList; import java.util.Iterator; import java.util.List; public class TestType { public static void main(String[] args) { TestType t=new TestType(); Method[] methods=t.getClass().getMethods(); for (int i = 0; i < methods.length; i++) { Method m=methods[i]; System.out.println(m.getName()); Class[] params=m.getParameterTypes(); for (int j = 0; j < params.length; j++) { Class p=params[j]; System.out.println(p); System.out.println(p.getName()); System.out.println(p.getCanonicalName()); System.out.println(p.getSimpleName()); Field f; try { f = p.getDeclaredField("TYPE"); if(f!=null) System.out.println(">>>"+f.get(null)); } catch (SecurityException e) { } catch (NoSuchFieldException e) { } catch (IllegalArgumentException e) { } catch (IllegalAccessException e) { } } System.out.println("-----------------------------------------------"); } // System.out.println(Integer.TYPE); List list=new ArrayList(); list.add(1); list.add(new Integer(1)); for (Iterator iterator = list.iterator(); iterator.hasNext();) { Object object = (Object) iterator.next(); System.out.println(object.getClass().getName()); } } public void intF(int i) { } public void integerF(Integer i) { } public void doubleF(double i) { } public void DoubleF(Double i) { } public void booleanF(boolean i) { } public void BooleanF(Boolean i) { } } ? 比如说int 和java.lang.Integer 在每个包装类中都有一个静态字段TYPE 通过获取TYPE字段来获取其原始类型,如果获取异常,则说明其不是包装类。 然后通过获取该字段的值,来获取原始类型的名称。 比如说int 和java.lang.Integer 在每个包装类中都有一个静态字段TYPE 通过获取TYPE字段来获取其原始类型,如果获取异常,则说明其不是包装类。 然后通过获取该字段的值,来获取原始类型的名称。