zoukankan      html  css  js  c++  java
  • Java基础篇(JVM)——Class对象

    Class对象

    这篇文章算是补充的一点东西,主要看一看Class对象的相关知识。
    主要关心的有以下几个点:

    1. Class对象是什么?
    2. Class对象和反射
    3. Class对象如何使用

    Class对象是什么

    可以简单这么说:Class对象就是字节码文件存储的内容。所以将字节码加载进入内存中时,即在内存中生成了Class对象(Class对象和普通对象一样,也是存放在堆中;尽管加载进来的类信息是放在方法区当中的,这点要注意!)。

    有Class对象,就有Class类。Class类、Class对象,普通类、普通对象的关系如图:

    Class对象的作用是:在运行时期提供或者获得某个对象的类型信息,这对于反射比较重要。

    Class对象与反射

    反射是指在运行时,对于任意一个类,都能够动态地获得并使用其成员属性和方法。

    语言的动态性是指,在运行时能够改变结构或变量类型。Java语言是静态语言,正是通过反射,才实现了动态性。Spring等框架也是基于反射才有了实现的可能。

    如何获得Class对象

    三种方法:

    1. Class.forName("xxx"); ——Class的静态方法
    2. obj.getClass(); ——继承自Object类的普通方法
    3. Object.class(); ——类字面量

    Class对象如何使用

    主要可通过Class对象获得构造器,静态/普通变量,静态/普通方法,需要用到下面三个类。

    Constructor类:

    首先获得类构造器,再用Constructor类中的方法来使用构造器。

    1. 获得Constructor对象:

    • getConstructor(Class<?>... parameterTypes):返回指定参数类型、public访问权限的构造器

    • getDeclaredConstructor(Class<?>... parameterTypes):返回指定参数类型、所有访问权限的构造器

    • getDeclaredConstructor():返回所有访问权限的构造器

    2. 使用构造器

    获得类的构造器后,可以用cons.newInstance(xx,xxx);来使用构造器来传入参数,创建对象。

    Filed类

    常见方法:

    1. 获得Filed对象:

    • getFields:获取public修饰的所有属性,返回一个Field数组(包括父类的)

    • getDeclaredFields:获取所有属性,返回一个Field数组

    • getField:传入一个参数(属性名),获取单个属性,返回一个Field对象,只能获取public修饰的

    • getDeclaredField:传入一个参数(属性名),获取单个属性,返回一个Field对象

    2. 操作属性:

    myFiled.set(Object obj, Object value):设置指定对象中某个属性的值;

    get(Object obj):获得指定对象中某个属性的值;

    Method类

    常见方法:

    1. 获得Method对象:

    • getMethods:获取所有的public修饰的方法,包括父类的,返回Method数组

    • getDeclaredMethods:获取所有的返回,不包括父类,返回Method数组

    • getMethod:传入一个参数(方法名),返回一个Method对象,只能获取到public修饰的

    • getDeclared:传入一个参数(方法名),返回一个Method对象

    2. 调用方法:

    method.invoke(Object obj,Object... args):调用指定对象的指定参数的方法。

  • 相关阅读:
    Android用Gson解析JSON字符串
    使用PullToRefresh实现下拉刷新和上拉加载
    Android应用框架-Volley网络通信框架
    Android基本架构
    HWOJ-字符串的逆序
    剑指offer-第七章面试案例2(树中两个节点的公共祖先节点)
    剑指offer-第七章面试案例1(字符串转换为整型)
    剑指offer-第六章面试中的各项能力(不用加减乘除做加法)
    剑指offer-第六章面试中的各项能力(圆圈中剩下的最后数字)
    以《淘宝网》为例,描绘质量属性的六个常见属性场景
  • 原文地址:https://www.cnblogs.com/lilei94/p/10091898.html
Copyright © 2011-2022 走看看