昨晚学了reflection,感觉很XXX,这是基础,已前自己却从未了解过,内牛满面啊
1 用反射必须用CLass类
每一个对象都会对应一个唯一的class ,有三种方式可以得到某一个对象的Class,已String对象为例。
1>、 Class<?> cl1= java.lang.String.class;
2>、 CLass<?> cl2= java.lang.String.getClass();
3>、 CLass<?> cl3= Class.forName("java.lang.String");
其中,AA.class 和AA.getCLass();是不一样的,如果AA是最终的对象,则一样,如果AA比如是Object ,而AA其实是User类
那么AA.class就是得到object的Class,而AA.getClass得到的是User的实例。
2 通过Class可以构造出某一个类的实例对象,前提是该class所对应的对象必须有public的构造方法,最好是无参的。
1> String str=c(1,2,3).newInstance(); // 调用的是public的 无参的 等价于 String s=new String();
2> String str=c(1,2,3).getConstruction(new Class[]{String.class}).new Instance(new Object[]{"hello"});
// 有参的构造方法, 等价于 String s=new String("hello");
3 得到某一个对象的某一个方法或全部方法
注意:每一个对象的每一个方法都对应一个Method对象
Methods ms=c(1,2,3).getDeclaredMethods(); //得到某一个类所有方法的数组
Method method = c(1,2,3).getMethod("substring",new Class[]{int.class,int.class});
//得到某一个方法 需要传递方法名,第二个参数为该方法的输入参数数 组列
4 得到某一个对象的属性,也称公共成员变量
注意:每一个对象的每一个属性都对应一个Field对象
Field[] fields=c(1,2,3).getDeclaredFields(); // 得到某一个类所有的属性
Field f = c(1,2,3).getField(“aa”); //得到某一个类的已aa命名的属性
5 方法的调用,这个是重点。
调用String的substring方法
Object obj =method.invoke(str,new Object[]{1,5}); //等价于 Object obj=(Object)str.substring(1,5);
6 Class类中getMethods()与getDeclaredMethods()的区别
getMethods()得到public属性的方法
getDeclaredMethods()得到的是所有的privete、public等全部的方法
注 getFields和getDeclaredFields方法的区别和上面的一样
今天暂且到这里。
分享到:
相关推荐
java注解和反射的个人学习笔记
java学习——java中的反射学习笔记
java学习笔记java反射机制
这是一年多以来学习java和在项目中遇到问题之后总结出的一系列资料。包含:java 反射机制 流 内存管理等信息。
java反射学习的一些基础代码,简单使用反射的案例,为eclipse中的工作空间,编码GBK
基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码.zip 基于java的开发源码-java多线程反射泛型及正则表达式学习笔记和源码....
java反射机制
java学习笔记 [Java学习笔记doc]之反射机制
轻松掌握java反射技术,虽然讲得比较简单,但是通俗易懂。
Java反射机制总结(实例分析) Java反射机制学习笔记
java语言反射与动态代理学习笔记
注解与反射—狂神说Java学习笔记
《Java JDK 7学习笔记》将IDE操作纳为教学内容之一,使读者能与实践结合,提供的视频教学能更清楚地帮助读者掌握操作步骤。 内容简介 书籍 计算机书籍 《java jdk 7学习笔记》是作者多年来教学实践经验的总结...
1.1. JAVA特点 1-4 1.2. 运行原理 1-4 1.3. JAVA目录 1-4 2. 一•基础知识 2-4 2.1. 配置环境 2-4 2.2. Java中基本概念 2-5 3. 二•定义,关键字和类型 3-5 3.1. 注释的三种形式 3-5 3.2. Java代码中的“;”、“{}...
关于Java反射的笔记,在学习java者可以看看
Java 基础学习笔记,主要包括: 10_Java常见对象.md 10_Java常见对象_2.md 1_数据类型.md 3_运算.md 4_Object通用方法.md 5_关键字.md 6_反射.md 8_泛型.md JDK8新特性.md 正则表达式.md Java是一种面向对象的编程...
JAVAWEB反射学习笔记中使用的java文件,用于演示反射的各种效果
尚硅谷康师傅java学习笔记。 、2020-4-5 java学习笔记 2020-4-6 java笔记 ---内部类 2020-4-6 java笔记 ---异常 2020-4-6 java笔记 --多线程 ...2020-4-21 java反射 2020-4-22 java8 新特性 2020-4-27 单元测试
java 开发,常用框架笔记(hibernate,spring,springmvc等)