前几天我在想-这是最重要的Java API。 哪种SE和EE API可以使大多数Java生态系统成为可能,而哪些API不能刚刚被重新创建为第三方库。

正如您可能已经猜到标题一样,我认为它是Reflection API 。 是的,它不可避免地是每个项目的直接或间接的一部分。 但这对于更多的API(尤其是Collection API)是正确的。 但是,Reflection API的重要之处在于它启用了当今大多数流行的工具和框架-Spring,Hibernate,大量的Web框架。

其他大多数API都可以在JDK之外实现。 Collections API很可能是commons-collect或番石榴。 最好将它作为JDK的一部分,但没有它我们可以进行管理(它出现在Java 1.2中)。 但是反射API不能。 它几乎必须是语言的组成部分。

没有反思,您将无法拥有我们今天使用的任何精美工具。 不是ORM,不是依赖项注入框架,也不是大多数Web框架。 好吧,从技术上讲,您可能在某个时候有了主题– 使用SPI或仅使用java-config。 可能有人争辩说,如果不是为了反思,我们将跳过整个XML配置时代,而直接涉足基于代码的配置。 但是,依赖于所有这些框架中的反射的不仅仅是配置。 即使Spring可以在配置过程中实例化其bean并通过将它们转换为InitalizingBean初始化,您将如何在不进行反射的情况下处理自动装配的注入(“手动”不算,因为它不是自动装配的)? 在休眠状态下,自省和Java bean API似乎足够了,但是当您深入研究时,它们还不够。 通常,不可能处理注释。

没有这些框架,Java就不会是今天的广泛技术。 如果我们没有庞大的开源生态系统,那么Java将会是利基市场[需要引用]。 当然,这不是唯一的因素–语言设计者然后JVM实现者正确地做了很多事情。 但是,我认为反思是其中之一。

是的,使用反射感觉很麻烦。 在非框架代码中进行反射似乎是不得已的事情–仅在给定库未正确设计用于扩展的情况下才使用它,但您需要对其进行一些微调以适合您的情况。 但是,即使您的代码库中有零反射代码,您的项目也可能充满了它,没有它就不可能实现。

使用反射的需求可能被视为该语言的缺陷之一–您无法使用该语言所提供的内容做重要的事情,因此您诉诸于魔术API,该API可让您不受限制地访问否则(据说)经过精心设计的蜜蜂。 但是我想说,即使进行反思也是事实上的语言功能。 它可能是使Java如此流行和普及的关键因素。

翻译自: https://www.javacodegeeks.com/2019/06/reflection-is-the-most-important-java-api.html

反射是最重要的Java API相关推荐

  1. java 反射api_反射是最重要的Java API

    java 反射api 前几天我在想-这是最重要的Java API. 哪种SE和EE API可以使大多数Java生态系统成为可能,而哪些API不能重新创建为第三方库. 正如您可能已经猜到标题一样,我认为 ...

  2. Jackson通过反射将Json转化为java对象

    Jackson的功能比较强大,我们这里主要使用Data Binding的方式,来看看如何使用反射将json转化为java bean,先加入如下依赖: Jackson 的核心模块由三部分组成. jack ...

  3. json反射java对象_Jackson通过反射将Json转化为java对象

    Jackson的功能比较强大,我们这里主要使用Data Binding的方式,来看看如何使用反射将json转化为java bean,先加入如下依赖: Jackson 的核心模块由三部分组成. jack ...

  4. Java API VIII

    Java API VIII java反射机制 1. 反射 反射是java中的动态机制,它允许我们在程序运行期间再确定类的实例化,方法的调用,属性的调用等,而不是传统意义上的在编码期间确定. 因此,反射 ...

  5. Java Api知识点

    目录 1.文档注释 2.String api 1.String 字符串 2.int length() 返回当前字符串的长度 3.int indexOf(String str): 4.String su ...

  6. 反射第一篇,学习Java的反射基础

    反射基础 什么是反射? 反射的使用 介绍:类对象 获取类对象 类对象的方法简介 使用:利用反射创建对象 例 调用特定构造方法 使用:获取成员变量并修改 例 使用:获取成员方法并调用 例 调用特定方法 ...

  7. 反射、Lambda表达式(Java学习笔记十二)

    文章目录 反射 Class 类 创建运行时类的对象 获取运行时类的完整结构 调用运行时类的指定结构 调用指定方法 调用指定属性 关于setAccessible方法的使用: 动态代理 Lambda表达式 ...

  8. Java API接口签名认证

    Java API接口签名认证 我们在进行程序开发的时候,一定会开发一些API接口,供他人访问.当然这些接口中有可能是开放的,也有可能是需要登录才能访问的,也就是需要Token鉴权成功后才可以访问的.那 ...

  9. 2021年大数据Kafka(五):❤️Kafka的java API编写❤️

    全网最详细的大数据Kafka文章系列,强烈建议收藏加关注! 新文章都已经列出历史文章目录,帮助大家回顾前面的知识重点. 目录 系列历史文章 Kafka的java API编写 一.生产者代码 第一步: ...

最新文章

  1. SpringCloud确保服务只能通过gateway转发访问,禁止直接调用接口访问
  2. 更改MySQL数据库目录位置
  3. 院士口中的“现代人知识结构”,学者推崇的“效率公民必备”,统计思维到底有什么了不起?...
  4. 一阶暂态电路三要素法和三种响应
  5. Unix系统编程()main函数的命令行参数
  6. 承载辉煌历史 畅想无线未来
  7. SQL Server查询中特殊字符的处理方法
  8. mysql 分表分库mycat_Mysql数据库之如何Mycat分表分库?
  9. MySQL 之 query cache
  10. [境内法规]中国人民银行关于印发《反洗钱现场检查管理办法(试行)》的通知—银发〔2007〕175号
  11. Kali——绕过杀毒软件检测工具Veil-Evasion
  12. 移动新魔百和M302A-YS代工_卡刷固件包
  13. openstack 单节点 ubuntu 12.04 server 安装步骤 转自陈沙克老师博客
  14. python爬取appstore的评论数据的步骤_评论抓取:Python爬取微信在APPStore上的评论内容及星级...
  15. Java实现批量文件加密
  16. 干货集中营(分享)-每日分享妹子图和技术干货
  17. 微信小程序获取用户收货地址与指纹验证接口(安卓和iphone)
  18. 蓝牙「5.0」和「4.2」的区别???
  19. 给你一部电梯,如何对其进行测试?
  20. CAD填充技巧:1分钟带你摸透CAD图案填充!

热门文章

  1. jzoj3508-好元素【hash,优雅的暴力】
  2. P1455-搭配购买【图论,并查集,dp,背包】
  3. OJ4121 and OJ2968-股票买卖 and Maximun sum【各种dp之6 and 9】
  4. 【模板】可持久化并查集
  5. 【背包】小明逛超市(jzoj 2148)
  6. <table/>默认适应内容宽度造成滚动条不显示的解决方法
  7. Spring 知识点详解
  8. 《走遍中国》珍藏版(四)
  9. SpringAOP之代理设计模式
  10. 复制中含有非法字符导致的错误