栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

什么是反射,为什么有用?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

什么是反射,为什么有用?

名称反射用于描述能够检查同一系统(或本身)中的其他代码的代码。

例如,假设您在Java中有一个未知类型的对象,并且想在该对象上调用“ doSomething”方法(如果存在)。除非对象符合已知的接口,否则Java的静态类型化系统并不是真正为支持该类型而设计的,但是使用反射,您的代码可以查看该对象并确定其是否具有名为“ doSomething”的方法,然后在需要时调用该方法。想要。

因此,给您一个用Java编写的代码示例(假设有问题的对象是foo):

Method method = foo.getClass().getMethod("doSomething", null);method.invoke(foo, null);

Java中一种非常常见的用例是带注释的用法。例如,JUnit 4将使用反射来遍历类,以查找带有@Test批注的方法,然后在运行单元测试时调用它们。

有一些不错的反思示例,可帮助您入门:http://docs.oracle.com/javase/tutorial/reflect/index.html

最后,是的,这些概念在其他支持反射的静态类型语言(如C#)中非常相似。在动态类型的语言中,上述用例不是必需的(因为编译器将允许在任何对象上调用任何方法,如果该方法不存在,则在运行时将失败),但是第二种情况是查找标记或以某种方式工作仍然很普遍。

来自评论的更新:

检查系统中的代码并查看对象类型的能力不是反射,而是类型自省。然后,反射就是利用自省功能在运行时进行修改的能力。这里的区别是必要的,因为某些语言支持自省,但不支持反射。这样的例子就是C ++



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/494909.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号