一、概念

  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。

二、功能

  (1)在运行时判断任意一个对象所属的类

  (2)在运行时构造任意一个类的对象

  (3)在运行时判断任意一个类所具有的成员变量和方法

  (4)在运行时调用任意一个对象的方法

注:要想使用反射,首先需要获得待处理类或对象所对应的Class对象

三、获取Class对象的方式

获取某个类或某个对象所对应的Class对象的常用的三种方式:

  (a)使用Class类的静态方法forName

    Class.forName("java.lang.String");

  (b)使用类的.class语法

    String.class;

  (c)使用对象的getClass()方法

    String s = "aa";

    Class<?> classTest = s.getClass();

四、通过类的不带参数的构造方法生成对象

  (1)先获得Class对象,然后通过该Class对象的newInstance()方法直接生成

    Class<?> classType = String.class;

    Object obj = classType.newInstance();

  (2)先获得Class对象,然后通过该对象获得对应的Constructor对象,再通过该Constructor对象的newInstance()方法生成

    Class<?> classType = String.class;

    Constructor cons = classType.getConstructor(new Class[]{});

    Object obj = cons.newInstace(new Object[]{});

五、通过类不带参数的构造方法生成对象

只能使用下面一种方式 

   Class<?> classType = String.class;

   Constructor cons = classType.getConstructor(new Class[]{String.class,int.class});

   Object obj = cons.newInstace(new Object[]{"hello",3});

java基础之反射机制的更多相关文章

  1. java基础篇---反射机制

    一.JAVA是动态语言吗? 一般而言,说到动态言,都是指在程序运行时允许改变程序结构或者变量类型,从这个观点看,JAVA和C++一样,都不是动态语言. 但JAVA它却有着一个非常突出的动态相关机制:反 ...

  2. Java基础教程——反射机制

    Java反射机制 Java反射机制是Java语言的一个重要特性,使得Java语言具备"动态性": 在运行时获取任意一个对象所属的类的相关信息; 在运行时构造任意一个类的对象: 在运 ...

  3. 【Java基础】反射机制

    反射 反射可以使我们很方便的创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代码链接.反射允许我们在编写和执行时,使我们的代码能够接入装载到JVM中的类的内部信息,而不是源代码中选定的类 ...

  4. [ 原创 ] Java基础7--Java反射机制主要提供了以下哪些功能?

    AVA反射机制主要提供了以下哪些功能? 在运行时判断一个对象所属的类 在运行时构造一个类的对象 在运行时判断一个类所具有的成员变量和方法 在运行时调用一个对象的方法

  5. Java基础加强-反射机制

    反射的基石 -> Class 类(字节码)/*只要是在源程序中出现的类型,都要各自的Class实例对象,例如:int,int[],void*/如何得到各个字节码对应的实例对象(Class类型) ...

  6. 【Java基础】java中的反射机制与动态代理

    一.java中的反射机制 java反射的官方定义:在运行状态下,可以获取任意一个类的所有属性和方法,并且可通过某类任意一对象实例调用该类的所有方法.这种动态获取类的信息及动态调用类中方法的功能称为ja ...

  7. 黑马程序员_Java基础:反射机制(Reflection)总结

    ------- android培训.java培训.期待与您交流! ---------- 反射在java中有非常重大的意义,它是一种动态的相关机制,可以于运行时加载.探知.使用编译期间完全未知的clas ...

  8. 浅说Java中的反射机制(二)

    写过一篇Java中的反射机制,不算是写,应该是抄了,因为那是别人写的,这一篇也是别人写的,摘抄如下: 引自于Java基础--反射机制的知识点梳理,作者醉眼识朦胧.(()为我手记) 什么是反射? 正常编 ...

  9. 黑马程序员:Java基础总结----反射

    黑马程序员:Java基础总结 反射   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 反射 反射的基石:Class类 Class类代表Java类,它的各个实例对象又分别 ...

随机推荐

  1. 介绍4款json的java类库 及 其性能测试

    JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式. 易于人阅读和编写.同时也易于机器解析和生成. 它基于JavaScript Programming Lan ...

  2. 【转】ButterKnife基本使用--不错

    原文网址:http://www.cnblogs.com/mengdd/archive/2015/06/23/4595973.html Butter Knife处理字段和方法绑定. 配置: 用gradl ...

  3. 在MacOSX下用管理员权限打开App应用程序

    最近但疼的事情比较多,特别是升级了10.9以后. 难怪10.9会免费,它喵的当我们所有人都是测试开发者,那我们做实验,到处都是BUG...虽然是这么吐槽了,但是实际上也没有特别大的,能够影响到我的生活 ...

  4. JavaScript高级程序设计16.pdf

    第8章 BOM BOM的核心对象就是window,它表示浏览器的一个实例,在浏览器中window对象有双重角色,它既是JavaScript访问浏览器的一个接口,又是规定的Global对象,因此所有在全 ...

  5. Sicily1151:魔板搜索及优化

    最终优化代码地址: https://github.com/laiy/Datastructure-Algorithm/blob/master/sicily/1151.c 题目如下 Constraints ...

  6. Matlab编程-数值计算相关语法

    1.变量的命名规则(类似C语言): (1)    区分大小写 (2)    变量长度不超过31位 (3)    变量名以字母开头,变量名中包含字母.数字.下划线,不可以用标点 2. Mathlab预定 ...

  7. hdu 4472 Count(递推即dp)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4472 代码: #include <cstdio> #include <cstring ...

  8. linux平台MongoDB数据库安装

    跟Ruiy哥一起玩转吧; <一,初始化玩转MongoDB> 1,关闭SElinux(Ruiy哥根据经验知红帽的SElinux架设就是个错误,还记得不管啥结构首先要关闭的就是它); 2,设置 ...

  9. reloadData should be in main thread

    reloadData should be called in main thread, so if you call it in work thread, you should call it as ...

  10. 从客户端(MuliteTextBox2="<a href="http://www....")中检测到有潜在危险的 Request.Form 值

    由于在.net中,Request时出现有HTML或Javascript等字符串时,系统会认为是危险性值.立马报出“从客户端 中检测到有潜在危险的Request.Form值”这样的错.   解决方案一: ...