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):调用指定对象的指定参数的方法。

  • 相关阅读:
    【IoT平台北向API调用】使用Postman调用Https接口
    【LiteOS】LiteOS移植常见问题
    搞IT产品,请谨记Mobile First
    Modelarts与无感识别技术生态总结(浅出版)
    高性能Web动画和渲染原理系列(1)——CSS动画和JS动画
    使用蓝图构建Flask项目目录
    一统江湖的大前端(8)- velocity.js 运动的姿势(上)
    只需两步手把手教你玩转图像识别
    秉承初心,砥砺奋进!华为云助力锦江都城开启云服务时代
    HBase 索引创建
  • 原文地址:https://www.cnblogs.com/lilei94/p/10091898.html
Copyright © 2011-2022 走看看