•什么是动态编程语言?
•答:程序运行时,允许改变程序结构或变量类型——这种语言称为动态语言
–从这个观点看,Perl,Python,Ruby是动态语言,C++,Java,C#不是动态语言
–Java有着一个非常突出的动态相关机制:Reflection
反射的概念
在运行状态中,对于任意一个类,都能够知道其所有属性和方法;对于任意一个对象,都能够调用其任意一个方法;
——这种动态获取信息以及动态调用对象的方法的功能称为Java语言的反射机制
1在运行时判断任意一个对象所属的类
2•在运行时构造任意一个类的对象
3•在运行时判断任意一个类所具有的成员变量和方法
4•在运行时调用任意一个对象的方法
5•生成动态代理
•Class:类的实例表示正在运行的 Java 应用程序中的类和接口
•Field:提供有关类或接口的属性的信息,以及对它的动态访问权限
•Constructor:提供关于类的单个构造方法的信息以及对它的访问权限
•Method:提供关于类或接口上单独某个方法
反射的简单使用
//什么叫反射
public class Testo2 extends object{public static void main(string[] args)
throws classNotFoundException {
//通过反射获取类的class对象Class
cl=Class.forName("com.kuang.reflection.User");
System.out.println(cl);
Class c2 =Class.forName("com.kuang.reflection.User");
Class c3=class.forName("com.kuang.reflection.User");
Class c4=Class.forName("com.kuang.reflection.User");
//一个类在内存中只有一个class对象
//一个类被加载后 ,类的整个结构都会被封装在class对象中,
System.out.println(c2.hashCode());
System.out.println(c3.hashCode());
System.out.println(c4.hashCode());
}
}
//实体类:pojo ,entity
class User{...}
缺点:降低性能使用反射基本上是一种解释操作,您可以告诉JVM您希望做什么
并且它满足您的要求。这类操作总是慢于直接执行相同的操作