返回顶部
首页 > 资讯 > 后端开发 > Python >Java中的Object.getClass()方法解析
  • 621
分享到

Java中的Object.getClass()方法解析

2024-04-02 19:04:59 621人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录JavaObject.getClass()方法具体见下面的例子JavaObject.getClass()源码分析1、栈2、堆3、老生代反射机制Java Object.getCla

Java Object.getClass()方法

Object.getClass()方法,这个方法的返回值是Class类型,Class c = obj.getClass(); 通过对象c,我们可以获取该对象的所有成员方法,每个成员方法都是一个Method对象;我们也可以获取该对象的所有成员变量,每个成员变量都是一个Field对象;同样的,我们也可以获取该对象的构造函数,构造函数则是一个Constructor对象

具体见下面的例子


package classTest; 
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.Method;
 

public class ClassUtil {
 
    
    public static void printClaSSMethodMessage(Object obj) {
        // 要获取类的信息 首先要获取类的类类型,传递的是哪个子类的对象 c就是该子类的类类型
        Class c = obj.getClass();
        // 获取类的名称
        System.out.println("类的名称是:" + c.getName());
        
        // c.getDeclaredMethods()
        Method[] ms = c.getMethods();
        for (int i = 0; i < ms.length; i++) {
            // 得到方法的返回值类型的类类型
            Class returnType = ms[i].getReturnType();
            System.out.print(returnType.getName() + " ");
            // 得到方法的名称
            System.out.print(ms[i].getName() + "(");
            // 获取参数类型--->得到的是参数列表的类型的类类型
            Class[] paramTypes = ms[i].getParameterTypes();
            for (Class class1 : paramTypes) {
                System.out.print(class1.getName() + ",");
            }
            System.out.println(")");
        }
    }
 
    
    public static void printFieldMessage(Object obj) {
        Class c = obj.getClass();
        
        // Field[] fs = c.getFields();
        Field[] fs = c.getDeclaredFields();
        for (Field field : fs) {
            // 得到成员变量的类型的类类型
            Class fieldType = field.getType();
            String typeName = fieldType.getName();
            // 得到成员变量的名称
            String fieldName = field.getName();
            System.out.println(typeName + " " + fieldName);
        }
    }
 
    
    public static void printConMessage(Object obj) {
        Class c = obj.getClass();
        
        // Constructor[] cs = c.getConstructors();
        Constructor[] cs = c.getDeclaredConstructors();
        for (Constructor constructor : cs) {
            System.out.print(constructor.getName() + "(");
            // 获取构造函数的参数列表--->得到的是参数列表的类类型
            Class[] paramTypes = constructor.getParameterTypes();
            for (Class class1 : paramTypes) {
                System.out.print(class1.getName() + ",");
            }
            System.out.println(")");
        }
    }
}

Java Object.getClass()源码分析

在这里插入图片描述

1、栈

Person对象引用

2、堆

person实例对象,Person.class信息

person实例对象:

  • mark Word:对象头,存放实例摘要信息,比如该对象的信息、hash值、线程信息等;
  • kclass元数据类型指针,指向Person类型元数据的指针;
  • 实例数据:对象的各种成员变量值。

Person.class信息

Person.class类的信息,方法、字段信息。

3、老生代

Person类型元数据

  • mark word:类型头,比如人类的锁信息;
  • kclass元数据类型指针:指向Person类型的类型指针;
  • java mirror:Person.class类的镜像信息。

反射机制

  • Person对象指针,先得到Person对象存储
  • 根据Person对象的kclass元数据类型指针获取到Person类型元数据
  • 根据 Person类型元数据中的java mirror得到Person.class类的信息

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: Java中的Object.getClass()方法解析

本文链接: https://lsjlt.com/news/160511.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Java中的Object.getClass()方法解析
    目录JavaObject.getClass()方法具体见下面的例子JavaObject.getClass()源码分析1、栈2、堆3、老生代反射机制Java Object.getCla...
    99+
    2024-04-02
  • Java中的Object.getClass()怎么使用
    这篇文章主要介绍“Java中的Object.getClass()怎么使用”,在日常操作中,相信很多人在Java中的Object.getClass()怎么使用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Jav...
    99+
    2023-06-22
  • 如何解析Java中的clone方法
    如何解析Java中的clone方法,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java中对象的创建clone顾名思义就是复制, 在Java语言中, clone方法被对象调用,...
    99+
    2023-06-17
  • 一文解析Java中的方法重写
    目录1.含义2.为什么要使用方法重写3.如何使用方法重写3.1 基本语法3.2 具体分析3.3 方法重写的一些小技巧1.含义 子类继承父类后,可以在子类中书写一个与父类同名同参的方法...
    99+
    2024-04-02
  • java List的stream()方法解析
    一、简介 常用的4种stream()用法。 (1) list.stream().map().collect() 方法,可以获取list中JavaBean的某个字段,转成一个新的list。 (2) list.stream().filte...
    99+
    2023-09-04
    java list stream 方法 代码 Powered by 金山文档
  • java poi解析word的方法
    之前做过用java读取word文档,获取word文本内容。但发现docx的支持,doc就异常了。后来找了很多资料发现是解析方法不一样。首先要导入poi相关的jar包我用的是maven,pom.xml引入如下:<dependency&g...
    99+
    2023-05-31
    java poi word
  • 深入解析Java中反射中的invoke()方法
    先讲一下java中的反射: 反射就是将类别的各个组成部分进行剖析,可以得到每个组成部分,就可以对每一部分进行操作 反射机制应用场景:逆向代码、动态生成类框架等,使用反射机制能够大大的...
    99+
    2024-04-02
  • Java中的SimpleDateFormat方法分析
    Java中的SimpleDateFormat方法分析 先进行专栏介绍SimpleDateFormat方法分析 常用方法构造方法格式化(从Date到String)举例分析 解析(从String到Date)举例分析 ...
    99+
    2023-08-16
    java 开发语言
  • Java中Synchronized的用法解析
    简单介绍 synchronized是Java中的关键字,是一种同步锁。它修饰的对象有以下几种:   1. 修饰一个代码块,被修饰的代码块称为同步语句块,其作用的范围是大括号{}括起来...
    99+
    2024-04-02
  • Java中方法的示例分析
    这篇文章给大家分享的是有关Java中方法的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。什么是方法例如:System.out.println();其结构为-->类.对象.方法;其含义为-->调...
    99+
    2023-06-20
  • 【JAVA基础】-JAVA开发中XML解析多种方法
    【JAVA基础】-JAVA开发中XML解析多种方法 1、什么是XML XML是可扩展标记语言(Extensible Markup Language)是一种标记语言,是从标准通用标记语言(SGML)中简...
    99+
    2023-09-09
    java xml
  • Java中StringBuilder类的用法解析
    目录一、StringBuilder说明二、StringBuilder特点三、StringBuilder常用方法一、StringBuilder说明 StringBuilder是一个可变...
    99+
    2023-05-19
    Java StringBuilder类用法 Java StringBuilder类 Java StringBuilder
  • java中String的一些常见方法深入解析
    这篇文章主要介绍“java中String的一些常见方法深入解析”,在日常操作中,相信很多人在java中String的一些常见方法深入解析问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大...
    99+
    2024-04-02
  • 关于Java中finalize析构方法的作用详解
    目录一. 析构方法1. 概念2. 作用3. 特点二. 基本使用1. finalize简介2. 代码案例2.1 Counter计数器2.2 CounterTest测试类四. 结语一. ...
    99+
    2023-05-19
    Java finalize析构方法 Java析构方法作用 Java finalize
  • java的json解析方法有哪几种
    在Java中,有多种方法可以解析JSON数据。以下是其中几种常用的方法: 使用原生的Java API:可以使用org.json包...
    99+
    2024-02-29
    java json
  • 详解Android中解析XML的方法
    XML在各种开发中都广泛应用,Android也不例外。作为承载数据的一个重要角色,如何读写XML成为Android开发中一项重要的技能。今天就由我向大家介绍一下在Android...
    99+
    2022-06-06
    解析xml XML 方法 Android
  • Java解析xml文件和json转换的方法(DOM4j解析)
    Java解析xml的方法有四种: DOM解析 SAX解析 JDOM解析 DOM4J解析 本次主要介绍使用DOM4j进行解析: 这里我主要使用两种方...
    99+
    2024-04-02
  • Java中NullPointerException的解决方法
    本篇内容介绍了“Java中NullPointerException的解决方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读...
    99+
    2024-04-02
  • java解析Excel文件的方法实例详解
    目录介绍1.1 pom依赖1.2 将数据流转化为可解析的Workbook类型文件1.3 解析1.4 Controller层接收前端传递的Excel文件(前端使用Element-ui的...
    99+
    2024-04-02
  • Java 泛型详解(超详细的java泛型方法解析)
    目录2. 什么是泛型3. 使用泛型的好处4. 泛型的使用4.1 泛型类4.2 泛型方法4.3 泛型接口5. 泛型通配符5.1 通配符基本使用5.2 通配符高级使用6. 总结1. 为什...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作