iis服务器助手广告广告
返回顶部
首页 > 资讯 > 前端开发 > node.js >Java反射库怎么实现
  • 229
分享到

Java反射库怎么实现

2024-04-02 19:04:59 229人浏览 八月长安
摘要

这篇“Java反射库怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java反射库怎

这篇“Java反射库怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java反射库怎么实现”文章吧。

在Java和Android中,我们常常会使用反射来达到一些兼容的目的。Java原生提供的反射很是麻烦,使用起来很是不方便。比如我们想要调UserManager的静态方法get,使用原生的实现如下

try {

 final Method m = UserManager.class.getMethod("get", Context.class);

 m.setAccessible(true);

 m.invoke(null, this);

} catch (NoSuchMethodException e) {

 e.printStackTrace();

} catch (IllegalAccessException e) {

 e.printStackTrace();

} catch (InvocationTargetException e) {

 e.printStackTrace();

}

实现起来好不麻烦。这其中

需要确定方法名和参数来获取对应的Method对象

设置Method对象的assessible为true

调用invoke方法,并且传入对应的参数

捕获其中可能抛出来的一连串异常

那么反射能简单点么,当然,而且还会简单很多。

这就是本文想要介绍的,jOOR(Java Object Oriented Reflection),它是一个对java.lang.reflect包的简单封装,使得我们使用起来更加直接和方便。

使用jOOR,上面的代码可以缩短成一行。

Reflect.on(UserManager.class).call("get", getApplicationContext());

依赖

jOOR没有依赖。

api介绍

Reflect

Reflect.on 包裹一个类或者对象,表示在这个类或对象上进行反射,类的值可以使Class,也可以是完整的类名(包含包名信息)

Reflect.create 用来调用之前的类的构造方法,有两种重载,一种有参数,一种无参数

Reflect.call 方法调用,传入方法名和参数,如有返回值还需要调用get

Reflect.get 获取(field和method返回)值相关,会进行类型转换,常与call和field组合使用

Reflect.field 获取属性值相关,需要调用get获取该值

Reflect.set 设置属性相关。

ReflectException

引入ReflectException避免了我们去catch过多的异常,也减少了纵向代码量,使得代码简洁不少。ReflectException抛出,可能是发生了以下异常。

ClassNotFoundException

IllegalAccessException

IllegalArgumentException

InstantiationException

InvocationTargetException

NoSuchMethodException

NoSuchFieldException

SecurityException

除此之外,ReflectException属于unchecked 异常,语法上不需要显式进行捕获,但是也需要根据实际情况,斟酌是否进行显式捕获该异常。

使用示例

创建实例

String string = Reflect.on(String.class).create("Hello World").get();

访问属性(public,protected,package,private均可)

1

char pathSeparatorChar = Reflect.on(File.class).create("/sdcard/droidyue.com").field("pathSeparatorChar").get();

修改属性(final属性也可以修改)

1

String setValue = Reflect.on(File.class).create("/sdcard/drodiyue.com").set("path", "fakepath").get("path");

调用方法(public,protected,package,private均可)

ArrayList arrayList = new ArrayList();

arrayList.add("Hello");

arrayList.add("World");

int value = Reflect.on(arrayList).call("hugeCapacity", 12).get();

实现原理

Reflect实际是对原生java reflect进行封装,屏蔽了无关细节。

以fields方法为例,其内部实现可以看出是调用了java原生提供的反射相关的代码。

public Map fields() {

 Map result = new LinkedHashMap();

 Class type = type();

 do {

 for (Field field : type.getDeclaredFields()) {

 if (!isClass ^ Modifier.isStatic(field.getModifiers())) {

 String name = field.getName();

 if (!result.containsKey(name))

 result.put(name, field(name));

 }

 }

 type = type.getSuperclass();

 } while (type != null);

 return result;

}

以上就是关于“Java反射库怎么实现”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网node.js频道。

--结束END--

本文标题: Java反射库怎么实现

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

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

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

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

下载Word文档
猜你喜欢
  • Java反射库怎么实现
    这篇“Java反射库怎么实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Java反射库怎...
    99+
    2022-10-19
  • JAVA中怎么实现反射机制
    这期内容当中小编将会给大家带来有关JAVA中怎么实现反射机制,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。JAVA反射机制定义:  JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属...
    99+
    2023-06-17
  • C#反射怎么实现
    本篇内容介绍了“C#反射怎么实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!C#反射技术主要基于System.Type类和System.R...
    99+
    2023-06-30
  • JAVA中怎么实现反射机制功能
    本篇文章为大家展示了JAVA中怎么实现反射机制功能,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。JAVA基础--JAVA反射机制详解   JAVA反射机制是在运行状态中...
    99+
    2023-06-17
  • java反射给对象属性赋值怎么实现
    Java反射可以通过`java.lang.reflect.Field`类来给对象的属性赋值。以下是一个示例代码: import ja...
    99+
    2023-10-27
    java
  • java反射的用途及实现
    本篇内容介绍了“java反射的用途及实现”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 反射是什么反射是Java程序开发语言的特征...
    99+
    2023-06-15
  • Java反射技术怎么用
    这篇文章主要为大家展示了“Java反射技术怎么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java反射技术怎么用”这篇文章吧。一、基本反射技术1.1 根据一个字符串得到一个类getClass...
    99+
    2023-06-25
  • java什么反射?
    java什么反射?反射是Java的特征之一,是一种间接操作目标对象的机制。JAVA反射机制是在运行状态中,对于任意一个实体类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象...
    99+
    2016-04-05
    java教程 java 反射
  • golang反射获取struct怎么实现
    在Go语言中,可以使用反射来获取结构体的信息。通过反射,可以获取结构体的字段、方法等信息,以及对结构体进行操作。下面是一个获取结构体...
    99+
    2023-10-23
    golang
  • java的反射机制如何实现
    Java的反射机制是指在运行时动态获取和操作类的相关信息的能力。通过反射,可以在运行时获取类的属性、方法、构造函数等信息,还可以动态...
    99+
    2023-08-31
    java
  • Java反射机制怎么理解
    本篇内容主要讲解“Java反射机制怎么理解”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java反射机制怎么理解”吧! 简介定义:Java语言中 一种动态(运行时)访问、检测 & 修改它...
    99+
    2023-06-03
  • Java反射机制怎么应用
    本篇内容主要讲解“Java反射机制怎么应用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Java反射机制怎么应用”吧!反射基础p.s: 本文需要读者对反射机制的API有一定程度的了解,如果之前没...
    99+
    2023-06-17
  • Java反射机制怎么使用
    今天小编给大家分享一下Java反射机制怎么使用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。反射的概述JAVA反射机制是在运...
    99+
    2023-06-30
  • 什么是java反射
    反射是啥?反射既然有“反”,就说明它是一个逆向的过程。那我们先来看看正向过程是怎样的。设计一个类,类实例化成对象,对象调方法或属性去实现一些功能。那反射是什么呢?不知道大家是否还记得上图,这是刚接触java时学到的知识。我自己的理解是现在是...
    99+
    2021-08-17
    java入门 java 反射
  • java反射机制的实现原理是什么
    Java反射机制是指在运行状态中,对任意一个类都能够知道这个类的所有属性和方法,对任意一个对象都能够调用它的任意一个方法。实现Jav...
    99+
    2023-08-08
    java
  • java反射机制是如何实现的
    Java反射机制是通过Java的`java.lang.reflect`包中的类和接口来实现的。该包中包含了一些重要的类,如`Clas...
    99+
    2023-10-08
    java
  • Java方法反射实现原理详解
    博主说:Java 反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为 Java 语言的反射机制。在本文中,占小狼分析了 J...
    99+
    2023-05-31
    java 方法反射 ava
  • java反射实现的方法有哪些
    在Java中,可以使用反射来实现以下方法:1. 获取类的信息:可以使用反射获取类的名称、修饰符、父类、接口、字段、方法等信息。2. ...
    99+
    2023-08-08
    java
  • 怎么在java中利用反射创建实例
    怎么在java中利用反射创建实例?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。Java有哪些集合类Java中的集合主要分为四类:1、List列表:有序的,可重复的;2、Queu...
    99+
    2023-06-14
  • Java怎么使用反射和动态代理实现一个View注解绑定库
    本篇内容介绍了“Java怎么使用反射和动态代理实现一个View注解绑定库”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!使用反射结合动态代理实...
    99+
    2023-06-30
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作