Java泛型類型通配符和C#對比分析
c#的泛型沒有類型通配符,原因是.net的泛型是CLR支持的泛型,而Java的JVM并不支持泛型,只是語法糖,在編譯器編譯的時候都轉(zhuǎn)換成object類型
類型通配符在java中表示的是泛型類型的父類
public void test(List<Object> c)
{
for(int i = 0;i < c.size();i++)
{
System.out.println(c.get(i));
}
}
//創(chuàng)建一個List<String>對象 List<String> strList = new ArrayList<String>(); //將strList作為參數(shù)來調(diào)用前面的test方法 test(strList);
編譯上面的程序,test(strList) 處將發(fā)生編譯錯誤,意味著不能把List<String> 當成List<Object> 的子類. 這時候就需要使用類型通配符了,通配符是一個?號
上面的List<Object>換成List<?>就可以通過編譯了
public void test(List<?> c)
{
for(int i = 0;i < c.size();i++)
{
System.out.println(c.get(i));
}
}
List<String> 可以作為 List<?> 的子類來使用, List<?> 則可作為任何List 類型的父類使用,
如果只想作為List<String>的父類,而不是List<int>呢,? 寫成這樣 List<? extends String>
在C#中約束泛弄類型是這樣
class MyClass<T, U>
where T : class
where U : struct
{}
interface IMyInterface
{
}
class Dictionary<TKey, TVal>
where TKey : IComparable, IEnumerable
where TVal : IMyInterface
{
public void Add(TKey key, TVal val)
{
}
}
Java 中約束泛型通配符上限:
//表明T類型必須是Number類或其子類,并必須實現(xiàn)java.io.Serializable接口
Public class Apple<T extends Number & java.io.Serializable>
{}
以上就是小編為大家?guī)淼腏ava泛型類型通配符和C#對比分析全部內(nèi)容了,希望大家多多支持腳本之家~
相關(guān)文章
javax.validation包里@NotNull等注解的使用方式
這篇文章主要介紹了javax.validation包里@NotNull等注解的使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-01-01
Java多線程Callable和Future接口區(qū)別
這篇文章主要介紹了Java多線程Callable和Future接口區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下2020-04-04
SpringBoot整合Mybatis-plus關(guān)鍵詞模糊查詢結(jié)果為空
SpringBoot整合Mybatis-plus使用關(guān)鍵詞模糊查詢的時候,數(shù)據(jù)庫中有數(shù)據(jù),但是無法查找出來,本文就來介紹一下SpringBoot整合Mybatis-plus關(guān)鍵詞模糊查詢結(jié)果為空的解決方法2025-04-04
mybatis 多表關(guān)聯(lián)mapper文件寫法操作
這篇文章主要介紹了mybatis 多表關(guān)聯(lián)mapper文件寫法操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12
Java異常報錯:java.nio.file.FileSystemException的多種解決方案
在Java應用程序中處理文件和目錄時,java.nio.file.FileSystemException是一個常見的異常,這個異常發(fā)生在嘗試進行文件系統(tǒng)操作時,本文將詳細探討FileSystemException的成因,并提供多種解決方案,需要的朋友可以參考下2024-12-12
Feign調(diào)用中的兩種Header傳參方式小結(jié)
這篇文章主要介紹了Feign調(diào)用中的兩種Header傳參方式小結(jié),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-01-01

