㈠ java怎樣聲明泛型方法
把泛型加在修飾符的前面,具體代碼如下:
public<T>voidshow(Tt){
//dosomeing
}
備註:一般泛型方法的參數也是泛型的,否則這個泛型方法沒有意義,
㈡ Java中的泛型的問題
public BaseDao(){
Class clazz=this.getClass(); //通過當前對象(this)獲取當前類
clazz.getGenericSuperclass(); //返回當前類的父類的Type
//轉換成有泛型的ParameterizedType類
ParameterizedType parameterizedType=(ParameterizedType)clazz.getGenericSuperclass();
//上面三句其實就是為了獲取BaseDao類本身
Type[] types = parameterizedType.getActualTypeArguments();
this.type=(Class<T>)types[0];
//上面兩句是獲取運行期的泛型類型,返回給當前對象(this)的type屬性
}
㈢ java怎麼得到泛型的類型
泛型,就是廣泛的類型。剛開始要用到哪個都不會知道。只有去實例化對象的時候才能確定。泛型的參數只能是對象類型。
你這個程序,T entity-entity就是是一個泛型的引用,你可以在構造方法中為其具體賦值.
例如:
private T entity;
public HibernateDao(T entity)
{this.entity=entity;}
HibernateDao<Strng> h=new HibernateDao<String>("哈哈");
這時,泛型就代表一個String對象.值是哈哈.
在沒有泛型之前,這種形式一般都是先定義一個通用的Object obj.然後在構造方法中為其賦值.
㈣ java中Dao中用泛型
貼上你IA類的代碼,泛型在java裡面是一種語法糖,作用簡單可以理解為讓開發在編譯階段能發現相關的錯誤 而不是讓錯誤在運行階段才被發現 如List<String> 則list裡面只能放入String類型,否則編譯都通不過,你可以搜搜語法糖的作用,實際泛型在形成的class文件中還是會被擦除
㈤ java 方法中如何在返回類型使用泛型
主要是一個編譯期的檢查,也避免了我們代碼中的強制轉換,比較經典的用法有泛型DAO,泛型Page的DTO。
現在我要說的是一個挺有趣但是貌似還不是太多的人在代碼中使用的方法,前段時間用guava和op4j的時候發現這樣的用法,看看了源碼,也是很簡單的。
比如guava中創建集合的方法 List<xx> list = Lists.newArrayList(),這個代替了我們傳統的 new ArrayList<xx>,為什麼在=的右邊不需要泛型了呢,我們看看源碼。
[java] view plain
public static <E> ArrayList<E> newArrayList() {
return new ArrayList<E>();
}
返回類型中帶有泛型E,並且這個泛型的來源在 static和 ArrayList之間的位置,我自己的理解是這個就和=左邊的一致,可能說的不夠專業但是意思應該就這樣。
於是我就依樣畫葫蘆在自己的代碼中也用了起來。
我要做的是一個仿httpsession機制的自定義協議是session。在httpsession.getAttribute方法返回的是一個
Object,然後我們再類型轉換。現在我用返回類型泛型來優化這個代碼,以下是我自定義協議session的getAttribute的代碼。
[java] view plain
@SuppressWarnings("unchecked")
public <E> E getAttribute(String key) {
return (E) map.get(key);
}
調用代碼
[java] view plain
Boolean isFirst = session.getAttribute("first");
在httpsession中我們則要這么寫
[java] view plain
Boolean isFirst = (Boolean)session.getAttribute("first");
泛型的用法還有很多,有新的心得再補充更新
㈥ java獲取泛型
這段代碼放在BaseDaoImpl中,在for循環中列印的t就是T和PK。
最後得到的persistType就是T的實際類型。
解釋一下紅色的部分:
因為this代表你的實例,
如果這個實例是(用Integer做ID的Student數據對象為例)
BaseDaoImpl<Student, Integer>studentDao=new BaseDaoImpl<Student, Integer>();
這個實例的「范型父類」(getGenericSuperclass)就是BaseDao<Student, Integer>,
如果你的實例是BaseDaoImpl<T, PK>子類的實例,
那麼「范型父類」就是BaseDaoImpl<T, PK>,
反正不是HibernateDaoSupport,因為HibernateDaoSupport不帶范型。
最後,不管是BaseDaoImpl,還是BaseDao,getActualTypeArguments()都得到Class數組,內容是{T的類型,PK的類型},取第一個(下標0),就得到T的類型(例中為Student.class)。
㈦ 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里的domain和都是指什麼啊
: data access Object是後台實現業務邏輯的java類;
對應DAO還有個DTO是Data transfer Object數據運輸對象,它是一個定義了很多變數及變數的get,set方法的類,常用來做流程方法的參數.也可以看成是一個自定義的數據類型;
domain是范圍,界線,也被用來批一個變數的有效作用域
也常用這個詞做一個包,然後在裡面放些DAO類文件.
net..domain.AddUserDao
㈨ java 中如何調用泛型的方法
這種也使用泛型,就很難達到設計的意願,維護起來也相對困難一些。
這要求不是泛型的使用,因為類型不確定,而是要使用反射的方法調用了。
㈩ java中泛型的設計模式有哪些優點
泛型是Java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、介面和方法的創建中,分別稱為泛型類、泛型介面、泛型方法。 Java語言引入泛型的好處是安全簡單。
參考資料:http://ke..com/view/1436058.htm