JAVA中的泛型

2021-07-10 01:09:01 字數 2436 閱讀 8231

1、泛型的基本作用

有時候建立乙個類,需要這個類中的屬性是object型別的,可以時而為string型別,時而為long型別等。比如乙個座標類point,橫座標和縱座標可能是整型,可能是浮點型,也可能是字串型別,需要輸出的結果如下:

**如下:

package org.mole.t;

public class point

public void setx(object x)

public object gety()

public void sety(object y)

}public class mixdemo

}通過以上的方法來實現屬性型別的可變不是很妥當,程式入口不規範,並且存在安全漏洞。例如,把屬性設定型別設定為object型別,當給屬性的賦值與其強制型別裝換不匹配時程式編譯不會出錯,執行報錯。

在jdk1.5之後,引入了泛型解決此類問題,使類中屬性的型別由外部決定。泛型的宣告如下:

class 類名 《泛型型別,泛型型別……>

public void setx(t x)

public t gety()

public void sety(t y)

}public class mixdemo

}使用泛型後類point中屬性的型別由外部決定,這時,當pointp = new point()例項化時宣告是integer型別時,再對p賦值為其他型別,編譯就會報錯。

可以在構造方法上使用泛型:

public class point

public void setx(t x)

public t gety()

public void sety(t y)

point(t x,t y)

}泛型也可以擦除,在使用泛型時不指定泛型,直接point f = new point();便擦除了泛型,後面的使用按object使用,擦除泛型一般不用

2、泛型的萬用字元的使用

類表示可以接受任意型別的泛型結合以上**加入fun()方法,**如下:

package org.mole.t;

public class point

public void setx(t x)

public t gety()

public void sety(t y)

}public class mixdemo

public static void fun(point> p)

}值的注意的是,普通的類可以向上轉型,應用泛型的類卻不能向上轉型。

泛型上限:操作泛型的最大父類,格式如下

類名稱《泛型名稱 extends 父類名稱》{}

泛型上限也可以應用在方法上,例如:

public static void fun(point extends number> p)

泛型下限:造作泛型的最小的型別,格式如下

類名稱《泛型名稱 super 型別名稱》{}

泛型下限也可應用在方法上。

3、泛型介面

泛型不僅能在類中使用,也可在介面中使用,格式如下:

inte***ce 介面名稱《泛型,泛型……>

package org.mole.t;

public class deomimpl1implements demo

}package org.mole.t;

public class demotest

}第二:建立乙個類,實現介面中泛型為類

package org.mole.t;

public class demotest2

}public inte***ce demo

public class deomimpl2 implements demo

}4、泛型方法

在方法上使用泛型,該方法所在的類不一定是泛型的操作類。泛型的使用格式如下:

package org.mole.t;

public class demo2

}public class test2

}**的執行結果如下:

也可將返回值設定為泛型陣列

5、泛型的巢狀

將info的型別設定到person中,同時person和info都是泛型,操作**如下:

package org.mole.t;

public class person

public void setinfo(t info)

}public class info

public void setparam(t param)

}public class test1

}

Java中的泛型

我們在定義的時候 就會確定資料型別 而泛型 就是是資料型別引數化 集合框架中沒有使用泛型和使用泛型的比較 沒有使用泛型 list li new linkedlist li.add 100 int x int li.get 0 system.out.println x 使用泛型 listli new ...

java中的泛型

如果乙個類裡只接受整數型別,那麼無法加入浮點型別 如果用object類物件取代整數型別,那麼編譯器就要正常判斷當前物件實際是哪一種型別,這會很浪費時間。如果用某個未指定的型別t取代整數型別,實際使用時再加入具體型別,那麼就可以處理多種型別的物件。例如 public class store publi...

java中的泛型

之前對泛型的理解一直停留在listj集合中的元素限定的那塊,後來慢慢的接觸到了介面的泛型,類以及方法的泛型。下面結合查到的資料,算是記錄一下。由於集合中的泛型限定太多簡單就不舉例了,現在來說說介面,類,和方法中的泛型。我們常見的比如 t,e,v,k等形式的引數常用於表示泛型形參,接收來自外部使用時候...