JAVA的内省(introspector)与反射(reflection)
很多朋友在深入的接触 JAVA 语言后就会发现这样两个词:反射 (Reflection) 和内省 (Introspector) ,经常搞不清楚这到底是怎么回事,在什么场合下应用以及如何使用?今天把这二者放在一起介绍,因为它们二者是相辅相成的。 反射 <?xml:namespace prefix = o /?> 相对而言,反射比内省更容易理解一点。用一句比较白的话来概括,反射就是让你可以通过名称来得到对象 ( 类,属性,方法 ) 的技术。例如我们可以通过类名来生成一个类的实例;知道了方法名,就可以调用这个方法;知道了属性名就可以访问这个属性的值。 还是写两个例子让大家更直观的了解反射的使用方法: // 通过类名来构造一个类的实例 Class cls_str = Class.forName( "java.lang.String" ); // 上面这句很眼熟,因为使用过 JDBC 访问数据库的人都用过 J Object str = cls_str.newInstance(); // 相当于 String str = new String(); // 通过方法名来调用一个方法 String methodName = "length" ; Method m = cls_str.getMethod(methodName, null ); System.out.println( "length