JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对象的方法;生成动态代理。
任何一个类如果没有明确地声明继承自哪个父类时,则默认继承Object类.
所以下面两行代码含义一样:
calss Person extends Object{} class Person{}
在java中Object类是一切类的父类,那么所有类的对象实际上也就都是java.lang.Class类的实例,所以所有的对象都可以转变为java.lang.Class类型表示.
实例化Class类对象:
package org.lxh.demo.getclassdemo ; class X{ }; public class GetClassDemo{ public static void main(String args[]){ Class<?> c1 = null ; // 指定泛型 Class<?> c2 = null ; // 指定泛型 Class<?> c3 = null ; // 指定泛型 try{ // 以下的操作形式是在开发中最常用的一种形式 c1 = Class.forName("org.lxh.demo.getclassdemo.X") ; }catch(ClassNotFoundException e){ e.printStackTrace() ; } c2 = new X().getClass() ; // 通过Object类中的方法实例化 c3 = X.class ; // 通过类.class实例化 System.out.println("类名称:" + c1.getName()) ; // 得到类的名称 System.out.println("类名称:" + c2.getName()) ; // 得到类的名称 System.out.println("类名称:" + c3.getName()) ; // 得到类的名称 } };
所以JAVA反射机制是Java动态性的体现.