這在 Java 泛型中怎麼可能呢?
php小編蘋果為您解答:在Java泛型中,"這在 Java 泛型中怎麼可能呢?"這樣的問題其實是有可能的。因為Java泛型允許使用萬用字元來表示不確定的類型,例如使用 "?" 表示任意型別。當我們在定義泛型方法或泛型類別時,可以使用通配符來限定參數類型或傳回值類型,從而實現一些特定的功能。雖然在某些情況下,可能會因為類型擦除而導致一些限制,但透過合理的設計和使用,我們可以在Java泛型中實現許多看似不可能的操作。
問題內容
我剛剛注意到,當談到 Java 泛型時,一些對我來說非常違反直覺的事情。我們來看看這個方法:
public static <T> void inspect(T a, T b) { // ... }
登入後複製
可以進行以下呼叫:
inspect(new Integer(3), new String("What? How?"))
登入後複製
我認為一旦類型T被推導出來,它就必須是一致的,就像兩個字串或兩個整數一樣。 這沒有多大意義,因為如果我的方法中有以下行:
T tmp
登入後複製
T是什麼?
誰能解釋一下嗎?
解決方法
主要結果是Integer
和String
都是從Serialized
實現的。
所以你的程式碼等於:
public static <T extends Serializable> void inspect(T a, T b) { System.out.println(a + "_" + b); }
登入後複製
如果變更為blow程式碼,則僅在Integer
或Number
子類別中有效。
public static <T extends Number> void inspect(T a, T b) { System.out.println(a + "_" + b); }
登入後複製
這是一個更好的例子:
public class MyTest { @Test public void demo() { inspect(new FirstSon("a"), new SecondSon("b")); } public <T> void inspect(T a, T b) { System.out.println(a + "_" + b); } interface Parent { } static class FirstSon implements Parent { private String name; public FirstSon(String name) { this.name = name; } } static class SecondSon implements Parent { private String name; public SecondSon(String name) { this.name = name; } } }
登入後複製
以上是這在 Java 泛型中怎麼可能呢?的詳細內容。更多資訊請關注PHP中文網其他相關文章!
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章
<🎜>:種植花園 - 完整的突變指南
3 週前
By DDD
<🎜>:泡泡膠模擬器無窮大 - 如何獲取和使用皇家鑰匙
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
如何修復KB5055612無法在Windows 10中安裝?
3 週前
By DDD
北端:融合系統,解釋
3 週前
By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆樹的耳語 - 如何解鎖抓鉤
3 週前
By 尊渡假赌尊渡假赌尊渡假赌

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強大的PHP整合開發環境

Dreamweaver CS6
視覺化網頁開發工具

SublimeText3 Mac版
神級程式碼編輯軟體(SublimeText3)