一般说到动态语言都是指在程序运行时允许改变程序结构或变量类型,从这个观点看,java和C++一样,都不是动态语言。
但是java有一种与动态语言非常类似的一种机制,反射。它允许java在运行时去操作未知的类、类的方法和类的属性等。从这个方面来说,java也可以说是一种半动态的语言了吧。
java的反射是指程序在运行时可以动态的得到对象信息和动态调用对象的方法和属性。也就是说,采用这种机制,java在运行开始时并不知道它加载的类是什么,而是在运行中去探知和自审类对象。
通过这种反射机制,我们可以在java运行时创建java对象,运行时判断任意一个对象所属的类,运行时动态调用任意一个对象的方法或属性。