安卓的反射运用

简介: 在我之前的几篇文章中曾反复提到反射这个概念,这是java的一个重要知识点,所以今天记录一下在安卓开发中如何写反射的。

引言

在我之前的几篇文章中曾反复提到反射这个概念,这是java的一个重要知识点,所以今天记录一下在安卓开发中如何写反射的。

反射概念

反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。
在计算机科学领域,反射是一类应用,它们能够自描述和自控制。
这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,
调整或修改应用所描述行为的状态和相关的语义。

从我的开发经历来看,我们主要用反射将写在其他文件中的代码功能可以通过反射机制让其可以在目的文件中使用访问(通过Java反射机制,用Class 创建类对象)。从而让功能繁杂的单一文件变得可以解耦,让其可读性更强,日志也更容易分析。

反射写法

安卓中一般如下写法:

Class clazz = Class.forName("***");
        //获取某个类的对象
        Object bst = clazz.newInstance();
        //获取有参有返回值的方法
        Method[] declaredMethods = clazz.getDeclaredMethods();
        Method m = clazz.getDeclaredMethod("getxxxx");//方法名字
        m.setAccessible(true);//关闭安全检查  **由于JDK的安全检查耗时较多.所以通过setAccessible(true)的方式关闭安全检查就可以达到提升反射速度的目的**
        Object query = m.invoke(bst); //返回值

反射的用处与解释

反射机制主要提供的功能

1.在运行时判断任意一个对象所属的类;

2.在运行时构造任意一个类的对象;

3.在运行时判断任意一个类所具有的成员变量和方法;

4.在运行时调用任意一个对象的方法;

java Reflection API简介
Class类:代表一个类,位于java.lang包下
Field类:代表类的成员变量(成员变量也称为类的属性)
Method类:代表类的方法
Constructor类:代表类的构造方法
Array类:提供了动态创建数组,以及访问数组的元素的静态方法

总结

感觉这一块在开发中很重要,虽然会变得复杂,但也使代码更加的“灵活”。后续我将会把一些难的知识点罗列出来,后续再深入探究。

相关文章
|
Android开发 安全
安卓跨进程通信之Aidl教程详解(一)
安卓多进程通信主要有四大方案:1,Activity 2,Broadcast Receiver 3,Content Prodiver 4,Service 1,Activity Intent intent = new Intent(); intent.
1373 0
|
6月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台框架解析
在移动应用开发的广阔舞台上,安卓和iOS一直是两大主角。随着技术的进步,开发者们渴望能有一种方式,让他们的应用能同时在这两大平台上运行,而不必为每一个平台单独编写代码。这就是跨平台框架诞生的背景。本文将探讨几种流行的跨平台框架,包括它们的优势、局限性,以及如何根据项目需求选择合适的框架。我们将从技术的深度和广度两个维度,对这些框架进行比较分析,旨在为开发者提供一个清晰的指南,帮助他们在安卓和iOS的开发旅程中,做出明智的选择。
|
7月前
|
存储 程序员 定位技术
程序员必知:安卓的四大组件
程序员必知:安卓的四大组件
92 0
|
7月前
|
安全 搜索推荐 Android开发
探索安卓和iOS系统的优劣与特点
在移动操作系统领域,安卓和iOS一直是最热门的两个选择。本文将探讨安卓和iOS系统的优劣与特点,帮助读者更好地了解这两个操作系统,并为选择合适的移动设备提供参考。
299 0
|
8月前
|
安全 开发工具 Android开发
安卓与iOS系统的优缺点比较
【2月更文挑战第6天】 安卓和iOS是目前市场上最流行的两种操作系统。虽然它们都拥有自己的独特之处,但它们也有一些共同之处。本文将探讨这两种操作系统的优缺点,并对它们进行比较。
229 5
|
XML Android开发 数据格式
关于安卓着色器的使用(一)
关于安卓着色器的使用(一)
131 0
|
Android开发 iOS开发 UED
关于安卓自定义类似于iOS系统自带的菊花loading
app请求数据多多少少需要点时间,友好的用户体验就是添加loading
190 1
关于安卓自定义类似于iOS系统自带的菊花loading
|
Android开发
安卓GLSurfaceView使用简单范例
安卓GLSurfaceView使用简单范例
112 0
|
Android开发
安卓:判断当前使用的是什么网
安卓:判断当前使用的是什么网
69 0
|
Java C# Android开发
Unity与安卓通信(2)
Unity与安卓通信(2)
130 0