日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

摆脱冷气_摆脱匿名类

發布時間:2023/12/3 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 摆脱冷气_摆脱匿名类 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

擺脫冷氣

我真的很喜歡編寫和閱讀lambda表達式-它們簡潔,富于表現力和時尚(來吧,這樣就沒關系了!)。 將此與匿名類進行比較。 這就是為什么我喜歡擺脫它們!

在過去的幾個月里,這種認識慢慢地實現了,昨天,我的潛意識對如何實現這一想法提出了質疑。 我將在這里展示它,并在嘗試后的幾周內發布后續信息。

總覽

為了確保每個人都知道我們在說什么,我將從快速回顧一下匿名類開始。 然后,我將解釋在確定他們的最后據點以及如何征服它之前,為什么要擺脫它們。

匿名類快速回顧

匿名類用于創建接口或抽象類的臨時實現,如下所示:

異端階級的例子

Runnable run = new Runnable() {@Overridepublic void run() {runThisThing(someArgument);} };

確實確實創建了一個單獨的類(您將在包含該代碼的類旁邊找到它的.class文件),但是由于它沒有名稱,因此您猜到了它的名稱,它稱為匿名類。 我對此事始終認為這些課程應該很短。 一種,可能有兩種方法,有兩行。 凡是更長的東西,以及絕對帶有狀態的東西,似乎都應該擁有自己的名稱和位置-在文件的底部作為嵌套類甚至是其自己的一個。 它總是使我無法讀取方法,該方法有時會創建10+行的who-knows-what實現,而該實現完全無關。 但是對于簡短的實現(如上面的示例),匿名類是最佳選擇。

發布時間由馬蒂亞諾塔下, CC-BY-NC-SA 2.0 。

那他們怎么了?

匿名類沒有什么錯 。 只是在使用lambda表達式和方法/構造函數引用大約一年后,它們似乎是如此笨拙。 我越習慣于簡單而準確地表達自己的行為,當面對匿名課堂的儀式和困惑時,我就越被排斥。

只需將其與上面的示例進行比較:

異端階級的例子

Runnable run = () -> runThisThing(someArgument);

在過去的幾個月中,我逐漸意識到自己不想再看到它們了,昨天,我對如何擺脫(必須知道的)必要的剩余事件有了一個很好的想法。

擺脫匿名類

如上所述,我認為比一個或兩個方法的簡單實現更為復雜的所有事物通常都應以嵌套或獨立類的形式獲得自己的名稱和位置。

(順便說一句,我傾向于對覆蓋現有超類方法以更改其行為的類進行相同的操作。這可能很短,但是如果您不知道現在已被覆蓋的原始代碼,發現差異并推導意圖通常很困難。在大多數情況下,給班級一個好名字可以解決這個問題。)

然后,當然有了Java 8,由于有了lambda表達式,大量匿名類的用例就消失了。 這很棒! 它也是擺脫它們最后一個據點的工具:“具有幾乎所有功能的”接口以及具有一個或兩個抽象方法的抽象類的實現。

所以這是我的主意:

當遇到適合自己實現的接口或抽象類時,我們將創建一個功能實現 。 這是一個非抽象類,它將所有方法調用委托給構造期間指定的功能接口。

我猜一個例子可以澄清這一點:

“幾乎功能”界面

public interface ValueListener<T> {void invalidated(T formerValue);void changed(T formerValue, T newValue);}

由于這不是功能接口,因此不能使用lambda表達式創建實現。 相反,您可以在需要時創建一個匿名類:

創建一個匿名實現

ValueListener<String> anonymousListener = new ValueListener<String>() {@Overridepublic void invalidated(String formerValue) {valueInvalidated(formerValue);}@Overridepublic void changed(String formerValue, String newValue) {valueChanged(formerValue, newValue);} };

相反,我們可以一次創建接口的功能實現:

功能實現

public class FunctionalValueListener<T> implements ValueListener<T> {private final Consumer<T> invalidated;private final BiConsumer<T, T> changed;public FunctionalValueListener(Consumer<T> invalidated,BiConsumer<T, T> changed) {this.invalidated = invalidated;this.changed = changed;}@Overridepublic void invalidated(T formerValue) {invalidated.accept(formerValue);}@Overridepublic void changed(T formerValue, T newValue) {changed.accept(formerValue, newValue);}}

此類的實例可以創建得更簡潔,更容易混淆:

實例化功能實現

ValueListener<String> functionalListener = new FunctionalValueListener<>(this::valueInvalidated,this::valueChanged);

另一個例子

實際上觸發這個想法的是我在代碼庫中看到的許多Swing AbstractAction匿名實現:

Action action = new AbstractAction() {@Overridepublic void actionPerformed(ActionEvent e) {performedAction(e);} };

這尖叫著“ LAMBDA EXPRESSION!” 但是您不能在抽象類上使用它。 但是在創建僅需要Consumer<ActionEvent>的功能實現之后,您可以這樣做,它看起來像這樣:

Action action = new FunctionalAction(this::performedAction);

好多了吧?

跟進

我將嘗試幾個星期,并報告其工作原理。 我已經看到了一些問題(JDK提供的功能接口的多樣性和異常)以及至少一種改善此模式的方法。

但是我認為值得討論這種方法。 我也這么認為,為什么不分享呢?

您也會嘗試嗎? 想到更多問題還是需要改進? 也許您只是覺得這很愚蠢? 無論如何,無論您在哪里找到我,都請發表評論,寫帖子或ping我。

反射

我表示不喜歡匿名類的冗長和混淆。 長的那些永遠不應該放在首位(使它們成為嵌套類或自己的類),但是短的有時候是最好的選擇。

通過短接口或抽象類的功能實現,我們可以改用lambda表達式,方法引用或構造函數引用,并從它們的簡潔性和可讀性中受益。

翻譯自: https://www.javacodegeeks.com/2015/04/getting-rid-of-anonymous-classes.html

擺脫冷氣

總結

以上是生活随笔為你收集整理的摆脱冷气_摆脱匿名类的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 久久中文字幕网 | 色综合久久88色综合天天免费 | 自拍偷拍亚洲欧洲 | 天天拍夜夜爽 | 波多野结衣三级视频 | 男女h网站 | 看免费黄色片 | 久久精品亚洲 | 悠悠色在线 | 午夜888| 一级视频免费观看 | 天堂中文在线观看视频 | 暴操白虎 | 巨大乳の揉んで乳榨り奶水 | 一区二区在线免费视频 | 中文字幕人妻色偷偷久久 | 欧美日韩一区二区不卡 | 欧美性猛交xxxx偷拍洗澡 | 男人与雌性宠物交啪啪 | 国产综合激情 | 日韩在线观看网址 | 日韩黄色影院 | 国产激情毛片 | 天天干天天色天天 | 无罩大乳的熟妇正在播放 | 爱豆国产剧免费观看大全剧集 | 91精品日韩 | 深爱五月激情五月 | 亚洲综合精品在线 | 91精品婷婷国产综合久久蝌蚪 | 在线观看福利网站 | 亚洲国产aⅴ精品一区二区的游戏 | 男人天堂久久久 | 欧美图片一区二区 | 国产精品视频一区在线观看 | 国产又粗又猛又黄又爽 | 久久婷婷激情 | 主播av在线| 免费看国产精品 | 99热在线国产 | 国产精品果冻传媒潘 | 自拍偷拍亚洲精品 | av在线免费网址 | 欧美日视频 | 亚洲人成在线免费观看 | 国产精品视频一区二区三区在3 | 中文字幕免 | 毛片网站在线 | 黄色性大片 | 午夜美女视频 | 亚州av免费 | 亚洲AV无码成人精品一区 | 91看大片| 欧美极品少妇×xxxbbb | 特级毛片av | 女女h百合无遮羞羞漫画软件 | 日韩色综合网 | 欧美成人黑人猛交 | 在线免费一区二区 | 少妇激情视频 | 大度亲吻原声视频在线观看 | 欧美成人秋霞久久aa片 | 色无极在线 | 亚洲九九九九 | 日韩丰满少妇无码内射 | 五月精品 | 日韩一区二区三区三四区视频在线观看 | 天天操天天干天天干 | 天天色天天综合 | 亚洲精品综合网 | 狠狠干老司机 | 久久99精品国产.久久久久久 | av不卡在线观看 | 国产毛片久久久 | 国产欧美一区二区三区在线看蜜臂 | 日韩av线上| 午夜小视频在线观看 | 韩国久久久久久 | 激情六月丁香 | 91全免费 | jzzijzzij亚洲成熟少妇在线播放 狠狠躁日日躁夜夜躁2022麻豆 | 久久久经典 | 日韩 国产 一区 | 欧洲做受高潮欧美裸体艺术 | 高潮av| 天天撸夜夜操 | 538国产精品一区二区免费视频 | av黄色av| 亚洲男人天堂2022 | 精品裸体舞一区二区三区 | 国产一区精品在线 | 日本三级免费看 | 日本欧美色图 | 91视频免费播放 | 国产jjizz一区二区三区视频 | 99热这里只有精品在线观看 | 激情网站在线观看 | 国产欧洲亚洲 | 人妻av中文系列 |