创建对象

以前,创建对象的方法通常都是通过new操作符调用该类的构造方法来创建的。例如,Date currentDate = new Date();
      大多数情况下,这种方式已足够满足需求。因为在编译期间,已经知道要创建的对象所对应的类名称。但是,如果现在编写一个开发工具软件,将可能直到运行时才知道要创建的对象所对应的类名称。例如,一个GUI开发工具可以让用户拖拽各种图形组件到设计界面上。

public Object create(String className){
根据类名来创建出它的对象
返回这个新创建的对象
}

使用无参构造方法

如果要使用无参的构造方法创建对象,只需调用这个类对应的Class对象的newInstance()方法。

Class c = Class.forName("java.util.ArrayList"); List list = (List) c.newInstance();
                需要注意的是:如果指定名称的类没有无参构造方法,在调用newInstance()方法时会抛出一个NoSuchMethodException异常。

使用带参数的构造方法

要使用带参数的构造方法来创建对象,可以分为如下3个步骤来完成。
                    第1步  获取指定类对应的Class对象。
                    第2步  通过Class对象获取满足指定参数类型要求的Constructor对象。
                    第3步  调用指定Constructor对象的newInstance方法,传入对应的参数值,创建对象。

调用方法

使用反射可以取得指定类的指定方法的对象代表,方法的对象代表就是java.lang.reflect.Method类的实例,通过Method类的invoke方法可以动态调用这个方法。

public Object invoke(Object obj, Object... args) throws IllegalAccessException,IllegalArgumentException, InvocationTargetException
                该方法的第一个参数是一个对象类型,表示要在指定的这个对象上调用这个方法

第二个参数是一个可变参数,用来给这个方法传递参数值;
                 invoke方法的返回值用来表示动态调用指定方法后的实际返回值。

注意:若要通过反射调用类的某个私有方法,可以在这个私有方法对应的Method对象上,先调用setAccessible(true)来取消Java语言对本方法的访问检查,然后再调用invoke方法来真正执行这个私有方法。

访问成员变量的值

使用反射可获取类的成员变量的对象代表,成员变量的对象代表是java.lang.reflect.Field类的实例,可以使用它的getXXX方法来获取指定对象上的值,也可以调用它的setXXX方法来动态修改指定对象上的值,其中的XXX表示成员变量的数据类型。

Properties

Java中的properties文件是一种配置文件,主要用于表达配置信息,文件类型为*.properties,格式为文本文件,文件的内容是格式是“键=值”的格式,也就是说文件的每一行都是先定义一个键名,然后等于号后面是值,在properties文件中,可以用“#”来作注释,properties文件在Java编程中用到的地方很多,操作很方便。最常见的操作该类文件的方法是通过Properties类来完成。
              JDK 中的 Properties 类存在于包java.util 中,该类继承自 Hashtable ,主要方法包括:getProperty(String key):用指定的键在此属性列表中搜索属性。也就是通过参数 key ,得到key所对应的 value。
            load(InputStream  inStream) :从输入流中读取属性列表(键和元素对)。通过对指定的文件进行装载来获取该文件中的所有键-值对,以供getProperty(String key) 来搜索。
          setProperty(String  key, String  value):调用Hashtable的方法put 。来设置“键-值”对。
         store(OutputStream out, String comments):以适合使用load方法加载到Properties表中的格式,将此Properties表中的属性列表(键和元素对)写入输出流。
         clear ():清除所有装载的“键-值”对。

反射(三) 笔记相关推荐

  1. go interface转int_24. 图解 Go语言中的反射三定律

    大家好,我是明哥. 由于某些不可抗力,之前该专栏的所有内容都被删除了.因此之后的一段时间内,我会重新发布这些文章,先给已经看过的关注者提个醒. 本文原文:http://golang.iswbm.com ...

  2. java反射 pdf_java反射学习笔记整理.pdf

    java反射学习笔记整理.pdf 还剩 15页未读, 继续阅读 下载文档到电脑,马上远离加班熬夜! 亲,很抱歉,此页已超出免费预览范围啦! 如果喜欢就下载吧,价低环保! 内容要点: Java 反射笔记 ...

  3. 上海宝山锦隆考试基地科目三笔记

    锦隆训练场科目三笔记 概述: 年前八月份报名学车,锦隆训练场-凌峰驾校-黄教练: 科目二,2016-11-3,一次性考过,100分: 科目三,2017-04-28,一次性考过,90分: 有问题的可以留 ...

  4. Go语言的反射三定律

    这里先抛出GO语言的反射三定律,然后一一进行讲解: 1.反射可以将"接口类型变量"转换为"反射类型对象" 2.反射可以将"反射类型对象"转换 ...

  5. java反射三种_Java反射

    1.反射获取Class对象的三种方式 反编译 不是自己写的类,也不知道类里面有哪些方法 变量,让你能够使用程序上线了,修改程序但不终止程序的运行--反射 (1)Object类 getClass 方法 ...

  6. java 反射机制 视频_【视频笔记】Java反射机制笔记

    Java 语言的反射机制 在Java运行时环境中,对于任意一个类,可以知道这个类有哪些属性和方法.对于任意一个对象,可以调用它的任意一个方法. 这种动态获取类的信息以及动态调用对象的方法的功能来自于J ...

  7. java反射学习笔记(常用的一些方法)

    User类(用于测试) package com.qingfeng.springbootstudy.entity;import java.io.Serializable;/*** (User)实体类** ...

  8. java反射三种方法_Java基础入门要学哪些 怎么掌握反射和枚举

    Java基础入门要学哪些?怎么掌握反射和枚举?Java是老牌编程语言,是一种可以撰写跨平台应用软件的面向对象的程序设计语言.Java所包含的基础知识点很多,只有掌握了这些知识才能更好地运用,下面就来给 ...

  9. 注解和反射详细笔记。自定义注解,元注解,内置注解。反射机制,Java Reflection,Java内存分析,反射操作注解,java.lang.reflect.Method,Class

    文章目录 注解 什么是注解 内置注解 元注解 自定义注解 反射机制 静态语言 vs 静态语言 Java Reflection 反射相关的主要API Class类 Java内存分析 创建运行时类的对象 ...

  10. 计算机图文混排三笔记,Markdown,让你印象笔记中的图片版面更好看

    但凡用过印象笔记的人应该都对印象笔记中的图片印象深刻.看到笔记中的图片那种自我放飞的神态,那种自我舒展的情形,简直想砸了电脑的冲动都有了. 好了,现在印象笔记支持Markdown了.图片操控从此更容易 ...

最新文章

  1. 2018-4-7 进化类算法------1、遗传算法(GA)
  2. 七夕大礼包:26个AI学习资源送给你!
  3. 图解使用CURL下载和上传文件
  4. 麦克纳姆轮运动原理_麦克纳姆轮介绍
  5. 20145324 《Java程序设计》第6周学习总结
  6. Tomcat学习--配置tomcat
  7. 遇到一个在linux下无法跨网段发送接收广播包的问题
  8. fonts.conf
  9. python软件如何下载-python软件怎么样?实际的操作方法来了
  10. H.264中的指数哥伦布解码
  11. 给大家分享10个值得关注的C语言开源项目
  12. 【Python】numpy库和scipy库的安装与使用
  13. 线性变换(1)——不变子空间
  14. Keras的BN你真的冻结对了吗
  15. oracle删除违反完整约束条件,ORA-02291: 违反完整约束条件 - 未找到父项关键字
  16. Contest20140709 testA 树型DP
  17. 计算机系统基础期末复习--袁春风详细版
  18. NOSQL,Redis的常用数据类型
  19. 如何让照片保持一百年不变色——富士instax SHARE SP-2体验探秘
  20. 初吻,他吻了你哪里?

热门文章

  1. Android系统版本与代号
  2. 新C++(5):异常
  3. Rayland-FDM打印机C200介绍
  4. 孙正兴:普适计算与计算机视觉
  5. MATLAB数字图像课题的开题报告
  6. 路由器和交换的本质区别解析
  7. Castor学习笔记(一)
  8. 文本框输入关键字提示
  9. Sql Server sql语句中发送电子邮件
  10. 示波器常用的13个概念