您的位置:首页 > 编程语言 > Java开发

javaoop--反射详解

2016-05-11 10:21 375 查看
1.所谓 反射: 就是说 你的程序 在 需要某些功能时,才会加载某些 对应的 类的 资源,

(在我看来,就是说 你不用 去 导入包-----实例化对象,就可以 使用某些类中的方法

或者说: 你可以很方便的 使用 某些方法)

2. 接着 直接上 使用的方法:

——————————————————————————————————————

1.使用反射 把 类中的 所有 方法 遍历出来-----------然后生成 对象----------生成对象后 还可以调用,

// 先加载某个类

Class cls = Class.forName("com.xt.vo.Student"); 如果 是一个已知的方法那么就可以 很 简单(名字,类型)

// 获取方法 所有方法组成的 一个 数组 Method m=cls.getMethod("getName",java.lang.String.class);

Method [] methods = cls.getMethods(); 使用这个方法 就是:m.invoke(
实例化对象
,"马云");

// 遍历出来 就是: cls.newInstance()

for(Method m:methods){

System.out.println("方法名:"+m.getName();

// 获取 出 每一个方法 里面的 参数类型 方便 以后 的 调用
每一个 返回结果是 数组 ,都需要 定义数组 来 接收

Class parameters [] = m.getParameterTypes();
还有 对 每一个 数组里面的 元素 进行操作 , 就需要 遍历出来

if(parameters!=null && parameters.length>0){
遍历 出来 才可以进行 操作

System.out.println("参数类型为:");

for(Class c : parameters){

System.out.print(c.getName()+"\t");

}

System.out.println();

}

}

//还可以 获取 返回值的 类型

Class rety=m.getReturnType();

可以 得到 类型名: rety.getName();

————————————————————————————————————————

2.还可以 获取一个 完整的 类结构

Class cls=String.class;

System.out.println("类的名称为:"+cls.getName());

System.out.println("是否为数组"+cls.isArray());

System.out.println("所在包:"+cls.getPackage());

System.out.println("父类:"+cls.getSuperclass());

————————————————————————————————
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: