Java 学习笔记(15)——反射】的更多相关文章

Java中的类文件最终会被编译为.class 文件,也就是Java字节码.这个字节码中会存储Java 类的相关信息.在JVM执行这些代码时首先根据 java 命令中指定的类名找到.class 文件然后使用类加载器将class字节码文件加载到内存,在加载时会调用Class类的classLoader方法,读取.class 文件中保存类的成员变量.方法.构造方法,并将这些内容在需要时创建对应的对象.这个就是java中的反射机制.反射机制提供了由字符串到具体类对象的映射,提高了程序的灵活性,在一些框架中…
1.什么是反射? Reflection(反射)是被视为动态语言的关键,反射机制允许程序做执行期间借助于ReflectionAPI取得任何类的内部信息,并能直接操作任意对象内部属性及方法 2.反射相关的主要API java.lang.Class:代表一个类 java.lang.reflect.Method:代表类的方法 java.lang.reflect.Field:代表类的成员变量 java.lang.reflect.Constructor:代表类的构造方法 3.简单入门示例代码 package…
一.反射 反射就是在剖析一个类,了解这个类的构造,创建这个类对应的对象. Class 代表字节码的类,代表类的类 Field 代表属性的类 Method 代表方法的类 Constructor 代表构造方法的类 Annotation 代表注解的类 Package 代表包的类 二.Class类 2.1 获取Class对象:必须有意义 ①通过类名.class的方式来获取对应类的字节码对象 import java.util.List; public class ClassDemo { @Suppress…
一.基础知识 对象是表示或封装一些数据,一个类被加载后JVM会创建一个对应该类的Class对象, 类的整个结构信息会被放在对应的对象中,通过这个对象我们可以获取改类的全部信息, 而这些操作称为反射. 二.反射基本操作 2.1获取对象类 上面说了每一个类在加载时会创建一个对应该类的Class对象,这个对象中存放着这个类相对应的信息.我们通过反射可以对这个类进行操作. 那么首先我们要获取这个类对应的Class对象, 我们可以通过Class.forName(path):也可以直接调用该对象getCla…
反射之中所有的核心操作都是通过Class类对象展开的,可以说Class类是反射操作的根源所在,但是这个类的实例化对象,可以采用三种方式完成. java.lang.Class类的定义: public final class Class<T> extends Object implements Serializable, GenericDeclaration, Type, AnnotatedElement, TypeDescriptor.OfField<Class<?>>,…
do-while循环时while循环的变体语法如下:do{  // 循环体 语句(组);}while(循环继续条件); 如果循环中的语句至少需要执行一次,那么建议使用do-while循环. for循环常用以下的通用形式编写循环:i = initialValue;  // 初始化循环控制变量while(i < endValue){ // Loop body ... i++;  // 修改循环控制变量}可以用for循环简化以上的循环:for(i = initialValue; i < endVal…
第1章 对象导论 本章主要讲OOP的思想及一些OOP基本概念 1.抽象过程:万物都是对象,对象具有状态.行为和标识.对象拥有属性和方法,以及在内存中的唯一地址. 2.每个对象都有一个接口:通过接口给对象发送消息请求来控制和操作对象,这里的接口是指对象的方法. 3.每个对象都提供服务:将对象想象成服务提供者,调用对象提供的服务来实现某一目的. 4.被隐藏的具体实现:对象对外界只提供服务接口,而隐藏内部的实现细节,通过关键字(public.private.protected)来设定边界. 5.复用具…
/* * String类的特点: * 所有的""都是String的对象 * 字符串一旦创建就是常量,不能改变 */ public class StringDemo { public static void main(String[] args) { //发现创建对象不需要new String str = "abcd"; System.out.println(str); //输出:abcd而不是内存地址,因为String类重写了toString方法 str = &qu…
简单工厂模式又称为静态工厂方法模式,它是由工厂对象来决定要创建哪一种类的实例化对象. 静态工厂代码: class Factory{ private Factory() {} public static IMessage getInstance(String className) { if("NetMessage".equals(className)) { return new NetMessage();return null; } } 子类和父接口的定义: interface IMes…
匿名对象: 是指创建对象的时候,只有创建对象的语句,却没有把对象地址值赋给某个变量 创建一个普通对象: Person p = new Person(); 创建一个匿名对象: new Person(); 注意: 1.匿名对象只能使用一次 2.匿名对象可以作为参数传递 3.匿名对象可以当作方法的返回值 示例: public class Demo { public static Person getPerson(){ //普通方式 //Person p = new Person(); //return…
JAVA学习笔记—review基本知识[反射与异常] 1.异常: 1.1异常的分类: Java会将所有的异常封装成对象,其根本父类为Throwable. Throwable有两个子类:Error 和Exception. 1.1.1 Error:一个Error对象表示一个程序错误,指的是底层的低级的不可恢复的严重错误 遇到Error,程序一定会退出,因为已经失去了运行所必须的物理环境. 对于Error我们无法进行处理,因为我们是通过程序来应对错误的,可是程序已经退出了. 1.1.2 Excepti…
<Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多态 第七章 接口与多态 第八章 异常处理 第九章 Collection与Map 第十章 输入/输出 第十一章 线程与并行API 第十二章 Lambda 第十三章 时间与日期 第十四章 NIO与NIO2 第十五章 通用API 第十六章 整合数据库 第十七章 反射与类加载器 第十八章 自定义类型.枚举 补充:Ja…
20145230 <Java程序设计>第9周学习总结 教材学习内容 JDBC JDBC简介 JDBC是用于执行SQL的解决方案,开发人员使用JDBC的标准接口,数据库厂商则对接口进行操作,开发人员无须接触底层数据库驱动程序的差异性,数据库本身是个独立运行的应用程序,你撰写的应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找.通常你的应用程序会利用一组专门与数据库进行通信协议的链接库,以简化与数据库沟通时的程序撰写.有时候,更换数据库的需求并不是没有,应用程序跨平台也是经常的需求,…
什么是注解 注解可以看作类的第6大要素(成员变量.构造器.方法.代码块.内部类) 注解有点像修饰符,可以修饰一些程序要素:类.接口.变量.方法.局部变量等等 注解要和对应的配套工具(APT:Annotation Processing Tool)一起使用,APT会对含有注解进行一些处理 比如API文档里面,有些方法下边的"@Deprecated",就是一个注解,它表示这个方法已经过时,使用的时候会收到警告 注解完全不影响程序的功能 元注解 元注解有6个,位于java.lang.annot…
JVM虚拟机 Java虚拟机有自己完善的硬件架构(处理器.堆栈.寄存器等)和指令系统 Java虚拟机是一种能运行Java bytecode的虚拟机 JVM并非专属于Java语言,只要生成的编译文件能匹配JVM对载入编译文件格式要求,任何语言都可以交由JVM运行,比如Scala.Groovy.Fantom等,见Java虚拟机维基百科 JVM虚拟机除了Sun开发的HotSpot外,还有BEA.IBM.微软.等公司都有开发.见<深入理解Java虚拟机(第二版)> 查看自己用的JVM:cmd->…
匿名内部类与Lambda表达式示例 下面代码来源于:0027 Java学习笔记-面向对象-(非静态.静态.局部.匿名)内部类 package testpack; public class Test1{ public static void main(String[] args) { ProcessArray pa=new ProcessArray(); int[] target={5,35,-2,35,-21}; pa.process(target, new Command(){ //匿名内部类…
20145330第九周<Java学习笔记> 第十六章 整合数据库 JDBC入门 数据库本身是个独立运行的应用程序 撰写应用程序是利用通信协议对数据库进行指令交换,以进行数据的增删查找 JDBC(Java DataBase Connectivity)是Java联机数据库的标准规范 定义一组标准类与接口,应用程序需要联机数据库时调用这组标准API,标准API中接口会由数据库厂商操作,称为JDBC驱动程序 JDBC标准分为两部分 JDBC应用程序开发者接口 JDBC驱动程序开发者接口 依操作方式可将…
所谓动态,也就是说这个东西是可变的,或者说不是一生下来就有的.提到动态就不得不说静态,静态代理,个人觉得是指一个代理在程序中是事先写好的,不能变的,就像上一篇"Java学习笔记——RMI"中的远程代理,其中客户端服务对象就是一个远程服务对象的代理,这个代理可以使得客户在操作时感觉像在操作本地对象一样,远程对象对于客户是透明的.我们可以看出这里的远程代理,是在程序中事先写好的,而本节我们要讨论的远程代理,是由JVM根据反射机制,在程序运行时动态生成的.(以上是本人的理解,如果有不正确的地…
很多与AWT类似. 事件处理参考:Java学习笔记--AWT事件处理 1.设计模式: 模型:存储内容视图:显示内容控制器:处理用户输入· 2. 文本输入常用组件 2.1 文本域: JLabel labelname = new JLabel("username");JTextArea textname = new JTextArea(1,40);//参数也可以为("默认字符",行,列);JPanel panel = new JPanel();panel.add(lab…
Java学习笔记4 1. JDK.JRE和JVM分别是什么,区别是什么? 答: ①.JDK 是整个Java的核心,包括了Java运行环境.Java工具和Java基础类库. ②.JRE(Java Runtime Environment,Java运行环境),运行JAVA程序所必须的环境的集合,包含JVM标准实现及Java核心类库. ③.JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种…
java学习笔记09--反射机制 什么是反射: 反射是java语言的一个特性,它允许程序在运行时来进行自我检查并且对内部的成员进行操作.例如它允许一个java的类获取他所有的成员变量和方法并且显示出来. java的反射机制的实现要借助4个类:Class,Constructor,Field,Method 其中Class代表的是类对象,Constructor  类的构造器对象,Field  类的属性对象,Method 类的方法对象.通过这四个对象我们可以粗略的看到一个类的各个组成部分. 在正常情况下…
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. java.lang.annotation Annotation接口是所有的Annotation都必须实现的接口. 系统内建的Annotation 在JDK1.5之后,系统中已经建立了如下的三个内建的Annotation类型,用户直接使用即可. @Override:覆写的Annotation @Depr…
狂神声明 : 文章均为自己的学习笔记 , 转载一定注明出处 ; 编辑不易 , 防君子不防小人~共勉 ! Java学习:注解,反射,动态编译 Annotation 注解  什么是注解 ? Annotation是从JDK5.0开始引入的新技术 . Annotation的作用 : 不是程序本身 , 可以对程序作出解释.(这一点和注释没什么区别) 可以被其他程序(比如:编译器等)读取.(注解信息处理流程,是注解和注释的重大区别.如果没有注解信息处理流程,则注解毫无意义) Annotation的格式 :…
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意一个类,能否知道这个类有哪些属性和方法?对于任意一个对象,能否调用它的任意一个方法?答案是肯定的. 这种动态获取类的信息以及动态调用对象的方法的功能来自于Java 语言的反射(Reflection)机制. Java 反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类. 在运行时构造任意一…
20145316许心远<Java程序设计>第3周学习总结 教材学习内容总结 一.定义类: 类定义时使用class关键字 如果要将x绑定到新建的对象上,可以使用"="制定,称为x名称参考至新建对象. 一个原始码中可以有多个类定义,但只能有一个是公开类,且文档中的主文档名必须与公开类名称相同. 二.使用标准类: java.util.Scanner 为了免去每次输入时都要写java.util.Scanner,可以一开始就是用import,在建立Scanner实例时必须传入java…
20145230 <Java程序设计>第7周学习总结 教材学习内容 Lambda语法概览 我们在许多地方都会有按字符串长度排序的需求,如果在同一个方法内,我们可以使用一个byName局部变量.如果是一个类中多个方法间要共享,那就使用一个byName的数据成员.因为byName要参考的实例没有状态问题,因为声明为static比较适合,如果要在多个类之间共享,那么就设定为public static.类似地,相对名称按照字典顺序排序,但忽略大小写差异,也不用再通过StringOrder的static…
20145231 <Java程序设计>第2周学习总结 教材学习内容总结 本周的学习采用的依然是先看课本,再看视频,然后实践敲代码,最后根据学习笔记总结完成博客. 第三章:基础语法 知识点比较多比较零碎,整理的都是实际操作中可能会出错的或是之前不太理解的. 1.1字节(byte)=8位(bit),1024字节=1kb,64位的操作系统代表字节是固定由八位二进制构成,字长为64位,每个字由八个字节构成:(思考:64位操作系统与32位操作系统在于构成字的字节数量不同,具体表现就是存储空间不同) 2.…
Java学习笔记之---API的应用 (一)Object类 java.lang.Object 类 Object 是类层次结构的根类.每个类都使用 Object 作为超类.所有对象(包括数组)都实现这个类的方法 常用方法 1.equals(Object obj) 指示其他某个对象是否与此对象“相等”. 2.hashCode() 返回该对象的哈希码值 3.toString() 返回该对象的字符串表示 4.getClass() 返回此 Object 的运行时类 实例 public class bbb…
Java学习笔记之---方法与数组 (一)方法 (1)什么是方法? 方法是解决一类问题的步骤的有序组合 方法包含于类或对象中 方法在程序中被创建,在其他地方被引用 (2)方法的优点 使程序变得更简短而清晰. 有利于程序维护. 可以提高程序开发的效率. 提高了代码的重用性. (3)方法的命名规则 方法的名字的第一个单词应以小写字母作为开头,后面的单词则用大写字母开头写,不使用连接符.例如:addPerson. 下划线可能出现在 JUnit 测试方法名称中用以分隔名称的逻辑组件.一个典型的模式是:t…
Java学习笔记之---基础语法 一. Java中的命名规范 (一)包名 由多个单词组成时,所有字母小写(例如:onetwo) (二)类名和接口 由多个单词组成时,所有单词首字母大写(例如:OneTwo) (三)变量名和函数名 由多个单词组成时,第一个单词首字母小写,其他单词首字母大写(例如:oneTwo) (四)常量名 由多个单词组成时,所有字母均大写,并且单词间用_连接(例如:ONE_TWO) 二. 标识符 可以由26个英文字母,数字,_和$组成 标识符大小写敏感 不能以数字开头 可以为任意…