天天看點

【JAVA與C#比較】泛型

1.java 中可以使用如下簡寫方式:List<T> list =new ArrayList(),而C#中不允許這種簡寫,new 也要申明類型。是以java最好還是寫明類型:

List<T> list =new ArrayList<T>();  //new對象時得寫具體一點的泛型,如LinkedList、ArrayList等,但申明對象時可直接用List
           

C#中寫法則是:

List<T> list =new List<T>();
           

2.java中允許将具體類型的泛型指派給未知類型,如:

List<?> list =new ArrayList<String>()
           

而這寫法在C#中是不被允許的。

3.java中表示繼承于父類的方法申明:

public void drawAll(List<? extends Shape> shapes)
           

而在C#中的寫法是:

public void DrawAll(List<T> shapes)where  T : Shapes
           

4.Java中泛型方法定義:

public static <T> T commaTest(T a) {
    return a;
}
           

而在C#中泛型類型放到方法名後面,寫法是:

public static T CommaTest<T>(T a)
{
    return a;
}
           

5.java中表示傳回泛型實體的方法申明:

public <T> T cloneClass(Class<T> t) {  //裡面參數Class<T>類型也可以寫成Class<? extends Class>
    T ret = null; 
    ...//
    return ret;  
} 
           

而在C#中的寫法是:

public T CloneClass<T>(T t)where T:class 
{
    T ret = null; 
    ...//
    return ret; 
}
           

6.java中表示泛型類,及其帶參數的構造函數,和在C#中的寫法沒有差別,都是以下形式:

public class cloneClass<T> {
    public cloneClass(T t) {

    }
}
           

繼續閱讀