标签:
1 2 | Class<String> c = String.class;//String.class就表示JVM里的一份表示String类的字节码 Class<String> c2 = String.class; |
1 2 | Class<String> clazz = (Class<String>) Class.forName("String");//ERROR Class<String> clazz = (Class<String>) Class.forName("java.lang.String"); |
1 2 3 4 | List<String> list = new ArrayList<String>();Class<?> listClz = list.getClass();//得到的是listClz的真正类型类 System.out.println(listClz);//java.util.ArrayList boolean b = listClz.isInstance(list);//等价于 list instanceof ArrayList |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | Class<IM> clz = IM.class;clz.getPackage()//获取clz的包clz.getName()//类的全限定名称clz.getSuperclass()//获取直接父类Class<?>[] ins = clz.getInterfaces(); //获取所有的接口,接口可能多个所以数组接收,要操作就循环遍历Class<?>[] ins= clz.getClasses();//获得类public修饰的的内部类/接口String getSimpleName() //返回源代码中给出的底层类的简称。Class<? super T> getSuperclass() //返回表示此 Class 所表示的实体(类、接口、基本类型或 void)的超类的 Class。 Class<?>[] getInterfaces() //确定此对象所表示的类或接口实现的接口。int getModifiers() //返回此类或接口以整数编码的 Java 语言修饰符。Modifier:public static String toString(int mod) //返回描述指定修饰符中的访问修饰符标志的字符串 <U> Class<? extends U> asSubclass(Class<U> clazz) //强制转换该 Class 对象,以表示指定的 class 对象所表示的类的一个子类。boolean isInstance(Object obj) //判定指定的 Object 是否与此 Class 所表示的对象赋值兼容。对象 instanceof 类 int mod = clz.getModifiers(); //获取类的访问修饰符,获取到的为数字类型,要转成对应的类型就要使用相应的方法System.out.println(mod);//1表示public System.out.println(Modifier.toString(mod)); |
1 2 3 4 5 6 7 | Class<Employee> clz = Employee.class;//现获取class对象Constructor<Employee>[] cs = (Constructor<Employee>[]) clz.getConstructors();//类的所有公共构造方法Constructor<Employee> con=clz.getConstructor(String.class,Integer.class);//得到public指定的构造器,有几个参数就使用几个参数类型的字节码Constructor<T> getDeclaredConstructor(Class<?>... parameterTypes) 访问不受访问权限控制clz.getDeclaredConstructors()//获取所有的构造器集合 |
1 2 3 4 5 | Class<MethodDemo> clz = MethodDemo.class;Method[] ms = clz.getMethods();//拿到子类及其父类里所有的public修饰的方法Method m = clz.getMethod("main", String[].class);//拿到子类及其父类里所有的public修饰的指定的方法,后面的参数可可变参数用(类型.Class)做参数clz.getDeclaredMethods();//获取自己类里的所有方法或指定的一个方法,和访问权限无关 |
1 2 3 4 | Field[] fs = clz.getFields();//获得所有的public 字段,包括继承Field f = clz.getField("c");//指定的一个 public的,包阔继承 Field[] fs = clz.getDeclaredFields();//得到所有的字段,只能获取当期类里面的,和访问权限无关f = clz.getDeclaredField("hahha"); |
标签:
原文地址:http://www.cnblogs.com/lindongdong/p/f7666077c9f7e2275322887ac3ec58cc.html