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());
————————————————————————————————
(在我看来,就是说 你不用 去 导入包-----实例化对象,就可以 使用某些类中的方法
或者说: 你可以很方便的 使用 某些方法)
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());
————————————————————————————————
相关文章推荐
- 深入Spring:自定义注解加载和使用
- CSDN学院“跟着龙哥学JavaWeb”的笔记
- MyEclipse中如何让类中的整个方法显示
- java 静态导入、System类、Date类、Runtime类、Calendar类、Collections类中的shuffle方法、Math类
- 解决Ubuntu下Firefox+OpenJDK没有Java插件的问题
- Eclipse的switch workspace 选项中删除多余的workspace
- (译)java NIO 示例代码
- 最佳java学习路线
- JAVA字符串操作
- JAVA文本框和文本域
- 开发中碰到的问题:java.lang.IllegalArgumentException: quality must be 0..100
- CXF Spring 使用
- 【第六章】 AOP 之 6.1 AOP基础 ——跟我学spring3
- JDK 7U15在 Windows x86平台下的安装方法
- spring mvc json
- JAVA基础(27) servlet的执行原理与生命周期
- Java集合之TreeSet
- 设计模式之一 单例设计模式
- Win7+Eclipse+Hadoop2.6.4开发环境搭建
- myeclipse 导入多模块maven项目