反射是最重要的Java API
前幾天我在想-這是最重要的Java API。 哪種SE和EE API可以使大多數(shù)Java生態(tài)系統(tǒng)成為可能,而哪些API不能剛剛被重新創(chuàng)建為第三方庫。
正如您可能已經(jīng)猜到標題一樣,我認為它是Reflection API 。 是的,它不可避免地是每個項目的直接或間接的一部分。 但這對于更多的API(尤其是Collection API)是正確的。 但是,Reflection API的重要之處在于它啟用了當今大多數(shù)流行的工具和框架-Spring,Hibernate,大量的Web框架。
其他大多數(shù)API都可以在JDK之外實現(xiàn)。 Collections API很可能是commons-collect或番石榴。 最好將它作為JDK的一部分,但沒有它我們可以進行管理(它出現(xiàn)在Java 1.2中)。 但是反射API不能。 它幾乎必須是語言的組成部分。
沒有反思,您將無法擁有我們今天使用的任何精美工具。 不是ORM,不是依賴項注入框架,也不是大多數(shù)Web框架。 好吧,從技術上講,您可能在某個時候有了主題– 使用SPI或僅使用java-config。 可能有人爭辯說,如果不是為了反思,我們將跳過整個XML配置時代,而直接涉足基于代碼的配置。 但是,依賴于所有這些框架中的反射的不僅僅是配置。 即使Spring可以在配置過程中實例化其bean并通過將它們轉(zhuǎn)換為InitalizingBean初始化,您將如何在不進行反射的情況下處理自動裝配的注入(“手動”不算,因為它不是自動裝配的)? 在休眠狀態(tài)下,自省和Java bean API似乎足夠了,但是當您深入研究時,它們還不夠。 通常,不可能處理注釋。
沒有這些框架,Java就不會是今天的廣泛技術。 如果我們沒有龐大的開源生態(tài)系統(tǒng),那么Java將會是利基市場[需要引用]。 當然,這不是唯一的因素–語言設計者然后JVM實現(xiàn)者正確地做了很多事情。 但是,我認為反思是其中之一。
是的,使用反射感覺很麻煩。 在非框架代碼中進行反射似乎是不得已的事情–僅在給定庫未正確設計用于擴展的情況下才使用它,但您需要對其進行一些微調(diào)以適合您的情況。 但是,即使您的代碼庫中有零反射代碼,您的項目也可能充滿了它,沒有它就不可能實現(xiàn)。
使用反射的需求可能被視為該語言的缺陷之一–您無法使用該語言所提供的內(nèi)容做重要的事情,因此您訴諸于魔術API,該API可讓您不受限制地訪問否則(據(jù)說)經(jīng)過精心設計的蜜蜂。 但是我想說,即使進行反思也是事實上的語言功能。 它可能是使Java如此流行和普及的關鍵因素。
翻譯自: https://www.javacodegeeks.com/2019/06/reflection-is-the-most-important-java-api.html
總結
以上是生活随笔為你收集整理的反射是最重要的Java API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: TCL发布双子舱洗烘护集成机T10, 开
- 下一篇: 带有Spring Boot和Spring