⑴ 簡述java常用3種泛型定義及其作用
泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。
定義泛型方法語法格式如下:
定義泛型方法時,必須在返回值前邊加一個<T>,來聲明這是一個泛型方法,持有一個泛型T,然後才可以用泛型T作為方法的返回值。
Class<T>的作用就是指明泛型的具體類型,而Class<T>類型的變數c,可以用來創建泛型類的對象。
⑵ java泛型類和泛型方法
1、什麼是泛型?
泛型簡言之就是類型參數化,不指定類型,運行時傳入類型。
如果業務需求有沒有可能不指定類型?有沒有可能在運行時才知道具體的類型是什麼?
所以,就出現了泛型。
public class Container<K, V> {
private K key;
private V value;
public Container(K k, V v) {
key = k;
value = v;
}
public K getKey() {
return key;
}
public void setKey(K key) {
this.key = key;
}
public V getValue() {
return value;
}
public void setValue(V value) {
this.value = value;
}
}
在編譯期,是無法知道K和V具體是什麼類型,只有在運行時才會真正根據類型來構造和分配內存。這就是泛型。
⑶ java 泛型方法的問題
調用泛型返回值的方法時,必須指定返回值的類型。可以通過變數聲明(類型 o = toBean....)或類型強轉((類型)toBean...)的形式。你的問題3在這里就可以看出,T 的類型是方法調用時確定的
⑷ java類的泛型方法調用問題
泛型可以用"<T>"代表,任意類型的,泛型方法需要什麼方法類型,直接定義相應的參數即可。
解釋: 「<T>」是泛型的默認值,可以被任意類型所代替,如:
List<String> list = new ArayList<String>();這個就定義了一個String類型的」泛型「集合,那麼T的類型就是字元串。
List<String> list = new ArayList<String>();//此處就定義了一個list參數類型,
list.add("StringBatch");//賦值給list
User user = new User();
String str = user.get(list);//這個list就是一個泛型方法值,這行代碼就是泛型方法的調用。
⑸ java 泛型的幾種用法
1. public class DAO<T> {
/**
* 泛型類
* 聲明類的同時聲明泛型類型
* 1.方法的返回值可以是使用聲明的泛型類型
* 2.方法的參數也可以是聲明類的泛型類型
* 3.方法體內可以使用泛型類型
*/
public T get(Integer id){
return null;
}
public void save(T entity){
}
}
2.
/**
* 泛型方法: 在方法聲明時, 同時聲明泛型. 在方法的返回值, 參數列表以及方法體中都可以使用泛型類型.
* public static <T> T get(Integer id){
* T result = null;
* return result;
* }
* 把指定類型的數組中的元素放入到指定類型的集合中
*/
⑹ java 中如何調用泛型的方法
這種也使用泛型,就很難達到設計的意願,維護起來也相對困難一些。
這要求不是泛型的使用,因為類型不確定,而是要使用反射的方法調用了。
⑺ java泛型方法的問題
你這里的String並不代表java.lang.String這個類,而是一個泛型名稱,它代表傳入這個方法的任何類型。換句話說,這里寫成<String>和寫成<T>效果是一樣的,作用都是給調用這個方法時傳遞的類型取一個別名String或是T。調用show(10),則編譯器通過自動裝箱編譯成調用show(Integer.valueOf(10));同理,調用show(true),編譯成調用show(Boolean.valueOf(true))。
⑻ Java中怎樣使用泛型T類的方法
調用泛型方法語法格式如下publicclassExampleA{
public<T>voidf(Tx){
System.out.println(x.getClass().getName());
}
publicstaticvoidmain(String[]args){
ExampleAea=newExampleA();
ea.f("");
ea.f(10);
ea.f('a');
ea.f(ea);
}
}
輸出結果:
java.lang.String
java.lang.Integer
java.lang.Character
ExampleA
使用泛型方法時,不必指明參數類型,編譯器會自己找出具體的類型。泛型方法除了定義不同,調用就像普通方法一樣。
需要注意,一個static方法,無法訪問泛型類的類型參數,所以,若要static方法需要使用泛型能力,必須使其成為泛型方法。
⑼ java 泛型方法
Java里有個最基礎的概念叫方法重載。
⑽ java 泛型方法報錯!
new Test1().do1((List<String>) ((List) (A.method())));
改成這樣就可以了,具體原因我也不太清楚。