广告
返回顶部
首页 > 资讯 > 精选 >Java反射如何使用
  • 823
分享到

Java反射如何使用

2023-06-25 14:06:00 823人浏览 薄情痞子
摘要

这篇文章将为大家详细讲解有关Java反射如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。反射相信刚接触Java的,第一句肯定会问什么是反射呢?反射有什么作用呢?为什么使用反射呢?首先反射是Java的

这篇文章将为大家详细讲解有关Java反射如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

    反射

    相信刚接触Java的,第一句肯定会问什么是反射呢?反射有什么作用呢?为什么使用反射呢?首先反射是Java的特征之一,项目中Java程序在运行的过程中,自动去识别并创建对应的类,能够动态的调用类的属性、构造方法、类中的方法。一句话描述:在程序中能动态调用不同的类和属性,去执行特定的操作。

    正因为反射能够在运行时动态加载需要的对象,所以很多框架中都使用到了反射。本次为了大家很好的理解反射,将基于反射创建对象、获取反射中的对象、获取类中属性、获取类中的构造方法、获取类中方法几个方面进行介绍,下面开始进入正题。

    基础数据准备

    为了方便演示,创建了一个基础的对象类。并基于他进行本次的介绍。创建的演示类JueJinUser如下,包含四个属性,分别有get和set方法,还有toString方法,没有创建构造方法,下面会介绍通过反射自动创建的相关反射的方法。

    public class JueJinUser {    private Integer id;    private String name;    private String title;    private Integer age;    public Integer getId() {        return id;    }    public void setId(Integer id) {        this.id = id;    }    public String getName() {        return name;    }    public void setName(String name) {        this.name = name;    }    public String getTitle() {        return title;    }    public void setTitle(String title) {        this.title = title;    }    public Integer getAge() {        return age;    }    public void setAge(Integer age) {        this.age = age;    }    @Override    public String toString() {        return "JueJinUser{" +                "id=" + id +                ", name='" + name + '\'' +                ", title='" + title + '\'' +                ", age=" + age +                '}';    }}

    基于反射创建对象

    基于反射创建类对象主要有两种方式:第一种是通过类对象的newInstance()方法创建对象,第二种是通过构造器中的 newInstance()方法创建对象。

    类对象的newInstance()方法

      类对象的newInstance()方法创建方法如下:

       Class class = JueJinUser.class;       JueJinUser jueJinUseByClass = (JueJinUser) class.newInstance();

    构造器的newInstance()方法

    Class jueJinUserClass = JueJinUser.class;        Constructor constructor = jueJinUserClass.getConstructor();        JueJinUser jueJinUserByConstructor = (JueJinUser) constructor.newInstance();

    需要注意的是,两种创建方式中第一种基于类对象的newInstance()的方法只能是无参构造方法,而第二种基于构造器的 newInstance()方法可以有有参构造方法和无参构造方法,比较灵活。

    获取反射中的对象

    获取反射对象的方式有三种,分别是:Class.forName、.class 方法和getClass() 方法。获取反射中对象的方法大家在项目中使用的还是比较多的,相信大家都不陌生。

    Class.forName

    Class clzForName = Class.forName("com.example.demo.module.JueJinUser");

    .class 方法

    Class clzForClass =JueJinUserString.class;

    getClass() 方法

    JueJinUser JueJinUser = new JueJinUser();    Class clzNewObject = str.getClass();

    获取类中属性

    通过getFields和getDeclaredFields的方法,可以获取类中的属性信息,其中getFields可以获取类中的公有属性值,而getDeclaredFields的方法,获取所有类中的属性信息,但是无法获取到父类的信息。格式如下:

    Class clz = JueJinUser.class;        Field[] fields = clz.getFields();        System.out.println("--- getFields start ---");        for (Field field : fields) {            System.out.println(field.getName());        }        System.out.println("--- getFields end ---");        System.out.println("--- getDeclaredFields start ---");        Field[] declaredFields = clz.getDeclaredFields();        for (Field field : declaredFields) {            System.out.println(field.getName());        }        System.out.println("--- etDeclaredFields end ---");

    获取类中的构造方法

    通过getConstructors和getDeclaredConstructors的方法,可以获取类中的构造方法信息,其中getConstructors可以获取类中构造方法,而getDeclaredConstructors的方法,获取所有类中的构造方法,但是无法获取到父类的构造方法信息。格式如下:

     System.out.println("--- getConstructors start ---");        Constructor[] constructors = clz.getConstructors();        for (Constructor constructor : constructors) {            System.out.println(constructor.getName());        }        System.out.println("--- getConstructors end ---");        System.out.println("---getDeclaredConstructors start---");        Constructor[] declaredConstructors = clz.getDeclaredConstructors();        for (Constructor constructor : declaredConstructors) {            System.out.println(constructor.getName());        }        System.out.println("---getDeclaredConstructors end---");

    获取类中方法

    通过getMethods和getDeclaredMethods的方法,可以获取类中的构造方法信息,其中getMethods可以获取类中构造方法,而getDeclaredMethods的方法,获取所有类中的方法,但是无法获取到父类的方法信息。格式如下:

     System.out.println("--- getMethods start ---");        Method[] methods = clz.getMethods();        for (Method method : methods) {            System.out.println(method.getName());        }        System.out.println("--- getMethods end ---");        System.out.println("--- getDeclaredMethods start---");        Method[] declaredMethods = clz.getDeclaredMethods();        for (Method method : declaredMethods) {            System.out.println(method.getName());        }        System.out.println("--- getDeclaredMethods end ---");

    关于“Java反射如何使用”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

    --结束END--

    本文标题: Java反射如何使用

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

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

    本篇文章演示代码以及资料文档资料下载

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档
    猜你喜欢
    • Java反射如何使用
      这篇文章将为大家详细讲解有关Java反射如何使用,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。反射相信刚接触Java的,第一句肯定会问什么是反射呢?反射有什么作用呢?为什么使用反射呢?首先反射是Java的...
      99+
      2023-06-25
    • 如何使用Java反射机制
      这篇文章主要介绍“如何使用Java反射机制”,在日常操作中,相信很多人在如何使用Java反射机制问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”如何使用Java反射机制”的疑惑有所帮助!接下来,请跟着小编一起来...
      99+
      2023-06-15
    • Java 反射使用大全
      前言 好多年前自己记的关于Java反射的笔记,这么些年下来,自己用到反射的时候就看这一份就够了。 但是笔记以文件形式存放不方便,所以将其放到CSDN中,也希望能给更多小伙伴带来帮助。 Class类 J...
      99+
      2023-09-26
      java android javaEE 反射 reflect
    • java反射应用
      反射使用JAVA反应进行两个vo有相同字段名字进行子转换:@Test public void doTransTest() { A a= new A(); A.setC(111L); ...
      99+
      2017-08-29
      java教程 java
    • 如何解析Java反射
      今天就跟大家聊聊有关如何解析Java反射,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、什么是反射反射就是把Java类中的各个成分映射成一个个的Java对象。即在运行状态中,对于任...
      99+
      2023-06-25
    • Java如何使用反射获取list泛型
      这篇文章主要介绍“Java如何使用反射获取list泛型”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Java如何使用反射获取list泛型”文章能帮助大家解决问题。通过属性来获取泛型的类型Field[...
      99+
      2023-07-05
    • C#反射如何使用
      这篇文章主要讲解了“C#反射如何使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C#反射如何使用”吧!explicit 和 implicit 的含义?explicit 和 implicit...
      99+
      2023-06-18
    • 如何在java中使用反射调用方法
      这篇文章将为大家详细讲解有关如何在java中使用反射调用方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的...
      99+
      2023-06-14
    • 【javaSE】 反射与反射的使用
      文章目录 🌲反射的定义🎍反射的用途🌴反射基本信息🍀反射相关的类🚩Class类(反射机制的起源 )🎈...
      99+
      2023-09-16
      开发语言 java 反射
    • PHP中的反射机制以及如何使用反射
      在 PHP 中,反射(Reflection)是一种机制,用于在运行时动态地获取类、接口、函数、方法等的信息。反射机制允许我们在运行时分析和修改代码结构,包括类的属性和方法等。 下面是一个简单的示例,展...
      99+
      2023-10-18
      php 开发语言 后端
    • Java反射机制怎么使用
      今天小编给大家分享一下Java反射机制怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。反射的概述JAVA反射机制是在运...
      99+
      2023-06-30
    • Golang reflect反射如何使用
      这篇文章主要介绍“Golang reflect反射如何使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Golang reflect反射如何使用”文章能帮助大家解决问题。首先有一...
      99+
      2023-07-06
    • 如何在Java项目中使用注解和反射
      今天就跟大家聊聊有关如何在Java项目中使用注解和反射,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。Java可以用来干什么Java主要应用于:1. web开发;2. Android开...
      99+
      2023-06-06
    • Java重点:反射机制的使用
      目录 一、概念 二、类类 1、类类的获取方式 1)类名.Class 2)对象.getClass() 3)Class.forName() 三、反射实例化 1、调用一个公有的无参构造方法 2、调用一个公有的一个参构造方法 3、调用一个公有的两...
      99+
      2023-09-12
      java 开发语言 jvm eclipse java-ee
    • java反射技术的使用场景
      这篇文章主要介绍“java反射技术的使用场景”,在日常操作中,相信很多人在java反射技术的使用场景问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”java反射技术的使用场景”的疑惑有所帮助!接下来,请跟着小编...
      99+
      2023-06-03
    • java注解和反射怎么使用
      Java注解和反射是Java编程中非常重要的概念。注解是一种元数据,可以用来为Java程序提供额外的信息,而反射则允许程序在运行时动...
      99+
      2023-05-29
      java注解和反射 java
    • java 中反射简单使用示例
      这篇文章将为大家详细讲解有关java 中反射简单使用示例,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。package reflect_test;public class Do...
      99+
      2023-06-02
    • Java基础之反射怎么使用
      本篇内容介绍了“Java基础之反射怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!反射是框架设计的灵魂(使用的前提条件:必须先得到代表...
      99+
      2023-07-05
    • Java反射使用的详细介绍
      文章目录 反射反射基本介绍反射获取类对象反射获取构造器对象反射获取成员变量对象反射获取方法对象 反射 反射基本介绍 反射概述: 反射认为类的每一个成份都是一个对象, 对于任何一个Class类,在"运行的时候"都可以直接得...
      99+
      2023-08-20
      java jvm 开发语言
    • 如何在Java中应用反射技术
      如何在Java中应用反射技术?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、反射概念Java的反射(reflection)机制是指在程序的运行状态中,可以构造任意一个类的对象...
      99+
      2023-06-15
    软考高级职称资格查询
    编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
    • 官方手机版

    • 微信公众号

    • 商务合作