反射的作用:通过反射可以获取该类的注解,构造器,方法,字段,父类等.
创建反射的三种方式:1,类名.class;
2,对象.getClass();
3,Class.forName(className);//className:类的全限定名.
反射Class常用的API:
public Constructor<?>[] getConstructors() throws SecurityException:获取所有公共的构造器.
public Constructor<?>[] getDeclaredConstructors()throws SecurityException:获取所以的构造器,包括私有的.
pubiic Constructor<?> getConstructor():获取制定构造器.如果有参数,则传递相应的参数类型字节码文件
public Method[] getMethods():获取所有公共的方法.
public Method[] getDeclareMethods():获取所以方法,包括私有的.
public Method getMethod(String method,Class clz);:获取指定方法,method方法名,参数类型的字节码文件
public Method getDeclaredMethod(String method,Class clz);获取私有方法,method方法名,clz方法所在类的字节码文件
public Field[] getFields():获取所以公共的字段.
public Field[] getDeclaredFields():获取所以字段,包括私有的.
public Field getField(String name);获取指定字段.
public String getName():以字符串形式返回此Class对象所代表的实体(类,接口方法,数组类,基本类型,void)的名称
public String getSimpleName():返回源代码的给出的第层类的简称.
public Annotation[] getAnnotations():返回此元素上所有的注释.
public T newInstance():创建一个此Class对象所代表的类的一个新实例.
Method对象的方法:
Object invoke(Object obj,Object...args):执行方法.obj为方法所在类的对象,args为方法的实际参数.
九大内置Class实例:
byte,short,int,long,float,double,char,boolean,void
同一类型在JVM中只有一份字节码,数组类型只有数据类型和维数相同才共享同一份字节码.例:int.class!=Integer.class
注意:Integer.Type==int.class.