
Android 用java反射机制能节省内存空间吗?
7个回答
展开全部
不能。反射是为了在运行时去访问编译时候不能确定的类/方法/数据成员,或者去改变某些类/方法/数据成员的访问权限(比如本来是private,通过反射可以绕过这个限制),并无法让你节约内存空间。
展开全部
看怎么用了。而且即便节省了,也节省不出几个字节。
反射的最主要的作用,是用于强行访问正常途径没有访问权限的代码,在知道目标类的类名和方法名的情况下可以使用。因此使用反射可以避免编写重复的方法和域,从而减少代码在内存上展开后占据的空间。但大多数情况下一个方法占据的空间都不大,所以节省量相当有限。
然而使用反射的话,既会降低代码的可读性,同时由于绕过了JAVA的代码访问权限,也容易留下安全漏洞。因此除非实在有必要,无法绕开,都尽量不建议使用反射机制。
反射的最主要的作用,是用于强行访问正常途径没有访问权限的代码,在知道目标类的类名和方法名的情况下可以使用。因此使用反射可以避免编写重复的方法和域,从而减少代码在内存上展开后占据的空间。但大多数情况下一个方法占据的空间都不大,所以节省量相当有限。
然而使用反射的话,既会降低代码的可读性,同时由于绕过了JAVA的代码访问权限,也容易留下安全漏洞。因此除非实在有必要,无法绕开,都尽量不建议使用反射机制。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2015-01-26 · 知道合伙人影视综艺行家
关注

展开全部
Java反射机制的原理及在Android下的简单应用
一、反射的概念及在Java中的类反射
反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
在Java中的反射机制,被称为Reflection。(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了。)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法。Reflection机制允许程序在正在执行的过程中,利用Reflection APIs取得任何已知名称的类的内部信息,包括:package、 type parameters、 superclass、 implemented interfaces、 inner classes、 outer classes、 fields、 constructors、 methods、 modifiers等,并可以在执行的过程中,动态生成Instances、变更fields内容或唤起methods。
好,了解这些,那我们就知道了,我们可以利用反射机制在Java程序中,动态的去调用一些protected甚至是private的方法或类,这样可以很大程度上满足我们的一些比较特殊需求。你当然会问,反射机制在Android平台下有何用处呢?
我们在进行Android程序的开发时,为了方便调试程序,并快速定位程序的错误点,会从网上下载到对应版本的Android SDK的源码(这里给大家提供一个2.3.3版本的下载链接)。你会发现很多类或方法中经常加上了“@hide”注释标记,它的作用是使这个方法或类在生成SDK时不可见,那么我们的程序可能无法编译通过,而且在最终发布的时候,就可能存在一些问题。
那么,对于这个问题,第一种方法就是自己去掉Android源码中的"@hide"标记,然后重新编译生成一个SDK。另一种方法就是使用Java反射机制了,可以利用这种反射机制访问存在访问权限的方法或修改其域。
一、反射的概念及在Java中的类反射
反射主要是指程序可以访问、检测和修改它本身状态或行为的一种能力。在计算机科学领域,反射是一类应用,它们能够自描述和自控制。这类应用通过某种机制来实现对自己行为的描述和检测,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。
在Java中的反射机制,被称为Reflection。(大家看到这个单词,第一个想法应该就是去开发文档中搜一下了。)它允许运行中的Java程序对自身进行检查,并能直接操作程序的内部属性或方法。Reflection机制允许程序在正在执行的过程中,利用Reflection APIs取得任何已知名称的类的内部信息,包括:package、 type parameters、 superclass、 implemented interfaces、 inner classes、 outer classes、 fields、 constructors、 methods、 modifiers等,并可以在执行的过程中,动态生成Instances、变更fields内容或唤起methods。
好,了解这些,那我们就知道了,我们可以利用反射机制在Java程序中,动态的去调用一些protected甚至是private的方法或类,这样可以很大程度上满足我们的一些比较特殊需求。你当然会问,反射机制在Android平台下有何用处呢?
我们在进行Android程序的开发时,为了方便调试程序,并快速定位程序的错误点,会从网上下载到对应版本的Android SDK的源码(这里给大家提供一个2.3.3版本的下载链接)。你会发现很多类或方法中经常加上了“@hide”注释标记,它的作用是使这个方法或类在生成SDK时不可见,那么我们的程序可能无法编译通过,而且在最终发布的时候,就可能存在一些问题。
那么,对于这个问题,第一种方法就是自己去掉Android源码中的"@hide"标记,然后重新编译生成一个SDK。另一种方法就是使用Java反射机制了,可以利用这种反射机制访问存在访问权限的方法或修改其域。
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能,反射机制的效率是非常低的.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能,反射机制的效率是非常低的.
再看看别人怎么说的。
再看看别人怎么说的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询