PS:本文就Java基础需要掌握的反射知识做下汇总和分析。

Java-reflect:java反射,对应我们研究框架、底层框架起到基本的知识储备。

  • Class类
    Java的世界类,万事皆对象,所有的类都是java.lang.Class类的实例对象
     Thers is a class named Class
     所有的类不管是内部类,都是Class的对象
     任何一个类都是Class类的实例对象,这个实例对象有三种表示方式
     1. Class c1=类名.class;
         任何一个类都是有个隐含的静态成员变量
     2.Calss c2=类实例.getClass();
        c1和c2都是类的类型
        类也是对象,是Class类型对象
       一个类是Class类的一个对象
    3.Class c3=Class.forName("类的完整路径”);
    PS:我们可以通过类类型去创建实例对象,newInstance(),其会调用无参数构造方法,需要进行强制类型转换,这个就是反射!!!!
  • 动态加载类
    什么是编译、什么是运行??
    静态加载:编译时刻加载了类就是静态加载,new 类();
    动态加载:class.forName是动态加载,实在运行的时候加载类
    PS:考虑两者有什么不同点,静态加载有一个类找不到的时候,整个项目都使用不了。动态加载实在项目运行的时候,才会去加载,我用什么就加载什么。
         功能性的类要使用动态加载,后续扩展比较容易
  • 基本的数据类型
    1.Class c1=int.class;//int的类类型
    2.Class c2=String.class;//String类的类类型
    3.Class c3=double.class;
    4.Class c4=Double.class;
    5. Class c5=void.class;
  • Class 类的基本的API
    public static void printClassMessage(Object ob){
            //传递的是那个子类的对象,那么c就是那个,底层是java实现的
            Class c=ob.getClass();
            //获取类的名称
            System.out.println("类的全路径名称:"+c.getName());
            System.out.println("类的名称:"+c.getSimpleName());
            //获取类的方法,获取的是所有的public方法
            Method[] msPulbic=c.getMethods();
            //获取当前类的所有的方法,不管修饰符
            Method[] msOwn=c.getDeclaredMethods();
            //打印方法名
            for (Method method : msPulbic) {
                //获取返回参数的类类型
                Class returnType=method.getReturnType();
                System.out.println("方法的返回值:"+returnType.getName());
                //获取参数类型,参数列表的类类型
                Class<?>[] paramTypes=method.getParameterTypes();
                for (Class<?> classType : paramTypes) {
                    System.out.println("方法的参数:"+classType.getName());
                }
            }
        }

Java-反射初级知识掌握的更多相关文章

  1. Java反射-高级知识掌握

    PS:本文就Java反射的高级知识做下汇总,理清在什么情况下,我们应该去使用反射,提供框架的健壮性,ps:xieyang@163.com/xieyang@163.com

  2. Java反射-中级知识掌握

    PS:本文就Java反射常用的中级知识做下汇总和分析/cnxieyang@163.com/xieyang@e6yun.com

  3. java反射基础知识(五)反射应用实践

    详解Java反射各种应用   Java除了给我们提供在编译期得到类的各种信息之外,还通过反射让我们可以在运行期间得到类的各种信息.通过反射获取类的信息,得到类的信息之后,就可以获取以下相关内容: Cl ...

  4. java反射基础知识(三)

    原文地址:http://tutorials.jenkov.com/java-reflection/index.html http://www.cnblogs.com/penghongwei/p/329 ...

  5. java反射基础知识(二)

    1. 了解 Java 中的反射 1.1 什么是 Java 的反射 Java 反射是可以让我们在运行时获取类的函数.属性.父类.接口等 Class 内部信息的机制.通过反射还可以让我们在运行期实例化对象 ...

  6. java反射基础知识(一)

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

  7. Java反射基础知识

    反射机制就是可以把一个类,类的成员(属性.方法)当成一个对象来操作,也就是说,类,类的成员,我们在运行的时候可以动态的去操作它们. 所有的Java类都继承了Object类,在Object类中定义了一个 ...

  8. java反射基础知识(四)反射应用实践

    反射基础 p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没有接触过的话,建议先看一下官方文档的Quick Start. 在应用反射机制之前,首先我们先来看一下如何获取一个对象对应的 ...

  9. java对象初级知识

    this属于类 方法中没有自己的this指针(本来以为js方法中有,其实并没有里,那是被new出来的function 在声明的时候可以赋初值: int a =12 但不能   int a  ;   a ...

  10. Java反射实战

    一.背景 最近的项目中需要使用到Java 反射的知识,以前不怎么了解,也基本没怎么用过,抽出一片时间,来具体学习和实战下Java的反射!拿来和大家分享以及记录方便以后学习! 二.反射相关概念解析 1. ...

随机推荐

  1. SLAM入门之视觉里程计(2):相机模型(内参数,外参数)

    相机成像的过程实际是将真实的三维空间中的三维点映射到成像平面(二维空间)过程,可以简单的使用小孔成像模型来描述该过程,以了解成像过程中三维空间到二位图像空间的变换过程. 本文包含两部分内容,首先介绍小 ...

  2. OpenCASCADE 公众号

    OpenCASCADE 公众号 eryar@163.com 今天也注册了一个微信公众号,以后会在微信公众号中发表OpenCASCADE学习文章,Blog会与微信公众号同步.下面是微信公众号二维码,欢迎 ...

  3. 《如何把事情做到最好》【PDF】下载

    <如何把事情做到最好>[PDF]下载链接: https://u253469.pipipan.com/fs/253469-230382279 内容简介 <如何把事情做到最好>编辑 ...

  4. HTML基础教程-元素

    HTML 元素 HTML 文档是由 HTML 元素定义的. HTML 元素 HTML 元素指的是从开始标签(start tag)到结束标签(end tag)的所有代码. 注释:开始标签常被称为开放标签 ...

  5. 搭建eclipse+tomcat开发环境

    JDK 1.6 Eclipse IDE For JEE Version Tomcat 6.0 tomcatPluginV33  //eclipse平台上的插件,但它并不是tomcat本身,需要安装独立 ...

  6. 用HTML5和原生js实现放大局部图片

    drawImage方法 context.drawImage(image,sx,sy,sh,dx,dy,dw,dh) sx\sy起始图像的横纵坐标,sh\sd起始图像的大小,dx\dy复制图像的横纵坐标 ...

  7. js数组操作-添加,删除

    js 数组操作常用方法. push():在数组后面加入元素,并返回数组的长度 unshift():在数组前面加入元素,并返回数组的长度 pop()删除最后一个元素 shift()删除第一个元素 var ...

  8. > library('ggplot2') Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : 不存在叫‘colorspace’这个名字的程辑包

    > library('ggplot2')Error in loadNamespace(i, c(lib.loc, .libPaths()), versionCheck = vI[[i]]) : ...

  9. Java禁止浏览器有缓存的源码

    Java禁止浏览器有缓存的源码 import java.io.IOException; import javax.servlet.Filter; import javax.servlet.Filter ...

  10. Android与javascript中事件分发机制的简单比较

    在前面两篇博客中,我们讨论了Android中的事件分发的相关内容,那么在本篇博客当中,我们就简单探讨一下html或javascript中的事件分发机制,并进行简单的对比. 在前端中,对事件进行绑定有三 ...