反射
来源:互联网 发布:手机怎样开淘宝店 编辑:程序博客网 时间:2024/06/06 00:23
java 反射
概念:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。
概念抽象难于理解,个人理解就是从.class→.java
主要反射类
java.lang.Class;
java.lang.reflect.Constructor;
java.lang.reflect.Field;
java.lang.reflect.Method;
java.lang.reflect.Modifier;
示例代码/** * 获取反射对象三种方式 * @throws InstantiationException * @throws IllegalAccessException * @throws ClassNotFoundException */ @Test public void testClass() throws InstantiationException, IllegalAccessException, ClassNotFoundException { //① Class clazz1 = Integer.class; //② Class clazz2 = Class.forName("java.lang.Integer"); //③ Class clazz3 = new Integer("1").getClass(); System.out.println(clazz1+":"+clazz2+":"+clazz3); } /** * 通过反射获取对象 * @throws InstantiationException * @throws IllegalAccessException */ @Test public void testCrete() throws InstantiationException, IllegalAccessException { Class clazz = Person.class; Person p = (Person) clazz.newInstance(); p.setName("xxx"); System.out.println(p); } /** * 获取属性 * @throws IllegalAccessException * @throws InstantiationException */ @Test public void testFileds() throws InstantiationException, IllegalAccessException { Class clazz = Person.class; Field[] fields = clazz.getDeclaredFields(); for(Field f : fields) { System.out.println(f.getName()+"::"+f.getType().getName()+"::"+f.getGenericType()); } } /** * 获取方法 */ @Test public void testMethods() { Class clazz = Person.class; Method[] methods = clazz.getMethods(); for(Method method:methods) { System.out.println(method.getModifiers()+" "+method.getName() +" "+method.getReturnType()); for(Type t : method.getGenericParameterTypes()) { System.out.println("--"+t); } } }
0 0
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 反射
- 如何使用加速审核通道@App Store审核加速
- 关于tomcat启动报错的原因
- ViewPager使用技巧总结
- Android 打造任意层级树形控件 考验你的数据结构和设计
- 纸上得来终觉浅,绝知此事要躬行。
- 反射
- Linux系统的硬链接和软链接
- 数据结构实验之查找七:线性之哈希表
- HTTP响应报文与工作原理详解
- hbase-1.0.2所有配置文件参数
- 我为什么将代码垂直对齐(你也应该如此!)
- HTML规范
- 新浪微博Android SDK Java代码规范
- ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)解决方法