反射是描述 数据结构的结构
属性、方法(数据)元数据
类(数据结构)描述数据的结构-->类也是特殊的对象---->元数据
CLASS类 描述数据结构的结构
在JAVA里面用Class 类 描述类的类 ---->
Method 类 描述类中的方法 ---->
反射得到描述数据额结构的数据的一种行为
Class类中有{
getPackage();//得到包
getName();//得到类名
getModerfy();//得到修饰符
Class getSuperclass();//得到父类 只有一个父类 返回一个Class <?>类型
Class gerInterface();//得到接口
Class[] getClasses();//得到多个子类 要用数组装
Filed[] getFiled();//获得一个类里面 所有的字段
Filed getFiled(String filename);//获得指定名称的字段
getConstructors();//获得构造器
getConstructor(Class...parameterType);//基本数据类型可以转变成一个CLASS
}
JAVA字段?
JAVA构造器?
表示Class类的对象
使用一个叫Class 的属性
Class<String> c=String.class //表示JVM里面表示String的字节码
Class<String> c2=String.class
System.out.println("c2");
System.out.println(c==c2); //得到true 用的是内存中的的同一份字节码
第二种
由于Class类里面没有构造函数 所以就有至少一个或者两个的静态函数 比如:forName()
forName(className,true,currentLoader)
其中className为完全限定名----->带有包名的name,比如java.lang.string;
Class<String> clazz=(Class<String>) Class.forName("java.lang.string")
Objiect getClasses()----->返回一个运行时的类型----->不是定义的类型
List<Stirng> lists=new ArrayList<String>;
lists s=new lists();
反射会以失去性能作为代价
框架用的多 性能失去多 因为框架就是用反射做的