java中的反射简单理解
来源:互联网 发布:sql数据库管理工具 编辑:程序博客网 时间:2024/06/07 13:53
先看看书上怎么说的
据我了解反射原理在java框架里面大量被使用,例如spring但是我也没看spring源码不知其实现过程,现在也就简单学习一下吧。基本的东西:
package com.reflect.exercise;public class Apple { public int weight =6 ; public String adress = "japan"; public void testApple(){ System.out.println("testApple start"); }}
写一个类
用反射来操作它:
package com.reflect.exercise;import java.lang.reflect.Field;import javassist.Modifier;public class ReflectCalss { public static void main(String[] args) throws ClassNotFoundException { Apple a = new Apple(); //反射获取名称 System.out.println(a.getClass().getName()); //三种获取class 的对象的方式 Class c1 = Apple.class; System.out.println(c1); Class c2 = a.getClass(); System.out.println(c2); Class c3 = c1.forName("com.reflect.exercise.Apple"); //调用类的方法,不用new方法 try { Apple an = (Apple) c3.newInstance(); an.testApple(); } catch (InstantiationException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (IllegalAccessException e) { // TODO Auto-generated catch block e.printStackTrace(); } //获取类的属性 Field [] field = c3.getDeclaredFields(); System.out.println(field); //循环把属性拿出来 for(int i = 0 ;i<field.length;i++){ //拿到属性的名称 System.out.println(field[i].getName()); //获取属性类型 System.out.println(field[i].getType()); //权限修饰符 int mo = field[i].getModifiers(); String priv = Modifier.toString(mo); System.out.println(priv); } }}
操作数组:
package com.reflect.exercise;import java.lang.reflect.Array;public class TestReflect { public static void main(String[] args) throws Exception { int[] temp = { 1, 2, 3, 4, 5, 6, 7, 8, 9 }; int[] newTemp = (int[]) arrayInc(temp, 15); print(newTemp); String[] atr = { "a", "b", "c" }; String[] str1 = (String[]) arrayInc(atr, 8); print(str1); } // 修改数组大小 public static Object arrayInc(Object obj, int len) { Class<?> arr = obj.getClass().getComponentType(); Object newArr = Array.newInstance(arr, len); int co = Array.getLength(obj); System.arraycopy(obj, 0, newArr, 0, co); return newArr; } // 打印 public static void print(Object obj) { Class<?> c = obj.getClass(); if (!c.isArray()) { return; } System.out.println("数组长度为: " + Array.getLength(obj)); for (int i = 0; i < Array.getLength(obj); i++) { System.out.print(Array.get(obj, i) + " "); } System.out.println(); }}
参考地址:
http://baike.xsoftlab.net/view/209.html#3_1 (感觉这个人写的很全面也很好了)
书上面还有反射和泛型的使用,反射和javabean之间的使用,有机会了解一下在写了
阅读全文
0 0
- java中的反射简单理解
- java反射简单理解
- java反射的简单理解
- 简单理解java反射机制
- 简单理解java反射机制
- 黑马程序员 java中的反射技术理解
- 关于java中的反射机制理解!
- 对java语言中的反射的理解
- JAVA中的反射机制理解与浅析
- 深入理解java中的反射机制
- Java反射在Android中的简单应用
- Java中的反射和内省简单实例
- 反射的简单理解
- 反射的简单理解
- 反射的简单理解
- oc中的"反射"理解
- Java反射机制详解,简单粗暴易理解
- 理解Spring框架---利用,xml,java反射简单实现Spring
- 处理程序“PageHandlerFactory-Integrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
- 设计模式讲解
- sphinx4的Microphone
- 使用cuda-gdb调试cu程序
- 1877: [SDOI2009]晨跑
- java中的反射简单理解
- bat删除指定时间之前文件
- Hibernate笔记
- 简单制作进度条,圆弧
- Java实现机器人的运动范围
- 关于Android的一些杂项
- jpg/png/psd/tiff图片格式详解
- TensorFlow实战:手写数字识别之K近邻
- 2017上半年总结