标签:
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