the Reflection of Java Language (1)

本文简述一下java的反射机制的起源

 

有时候我们说某个语言具有很强的动态性,有时候我们会区分动态和静态的不同技术与作法,我们朗朗上口动态绑定(dynamic binding)、动态链接(dynamic linking)、动态加载(dynamic loading)等。然而动态一词其实没有绝对而普遍适用的严格定义。

 

先来解释一下什么是动态语言:所谓的动态语言是程序在运行过程中允许改变程序的结构或变量类型,这种语言被称之为动态语言,例如 Ruby、python为动态语言,而Java、C++则属于静态语言。

 

尽管在这样的定语与分类下Java并不属于动态语言范畴,然后JAVA却有一个非常突出的机制“反射机制 Reflection”,利用这个机制,使Java可以在运行时动态的加载编译期间完全未知的classes,并获知其完整的结构.

 

众所周知Java有个Object类,是所有Java类继承的根源,期内声明了在所有Java类中被重写的函数:hashCode()、equals()、clone()、toString()、getClass()等,其中getClass()返回一个类得对象。

 

Class类十分特殊。它和一般其它类一样继承自Object类,其实体用以表达Java程序运行时的classesinterfaces,也用来表达enumarrayprimitive Java typesboolean, byte, char, short, int, long, float, double)以及关键词void。当一个被加载,或当加载器(class loader)的defineClass()JVM调用,JVM 便自动产生一个Class对象。(注意:Class并没有公有的构造函数)

 

Class类是Java反射机制的起源。

 

 

你可能感兴趣的:(java,jvm,c,python,Ruby)