有一些具有相同行為能力的資料管理器,為了統一規範這些行為,需要使用介面。
public inte***ce idatamanager:
public inte***ce idata:
寫乙個具體的資料管理器,實現這個介面:
public class mydatamanager:idatamanager
ilistfindadd()
}public class mydata:idata
因為每個資料管理器必定唯一關聯乙個對應的資料類,所以資料管理器介面應該做成乙個泛型介面,用以約束,保證以後的每個資料管理器都應該對應乙個自己的資料型別。
public inte***ce idatamanagerwhere t:idata
public inte***ce idata:
public class mydatamanager : idatamanager
ilistfindall()
}public class mydata:idata
目前從介面設計角度看,一點問題都沒有,碰到的問題是在使用資料管理器的時候。
介面需要做成乙個通用介面,它可以動態抓取都有哪些資料管理器,使用通用抽象資料物件實現介面的顯示。
public class mypanel
}
寫介面的時候,希望的是這樣的**,拿到的資料管理器都是抽象的,但是這麼寫拿到的一定是空物件,因為mydatamanager對應的資料型別是mydata,而我們as的時候,用的是idata。
用idata,物件例項化會出問題;用mydata,與初衷不符。
一直以來對資料和檢視的使用都是檢視直接呼叫,從檢視角度出發考慮導致這個矛盾的產生。
其實應該以介面為起點考慮問題,以物件導向的思想考慮,這麼設計出來的泛型介面一點問題都沒有,但是資料到了檢視層還是具體資料該怎麼辦呢,很簡單,把所有資料重新處理成idata即可,這樣檢視層拿到的所有資料都是idata型別了。
泛型結構使用大全(泛型類 泛型介面)
1 泛型類可能有多個引數,此時應將多個引數一起放到尖括號內,比如 2 泛型類的構造器如下 public genericclass 錯誤示例 public genericclass 3 例項化後,操作原來泛型位置的結構必須與指定的泛型型別一致。4 泛型不同的引用不能互相賦值。儘管在編譯時arrayli...
泛型 泛型在介面上的使用
package cn.itcast.genrictiry 泛型介面 泛型介面的定義格式 inte ce 介面名 宣告自定義泛型 泛型介面要注意的事項 1.介面上自定義的泛型的具體資料型別是在實現乙個介面的時候指定 的。2.在介面上自定義的泛型如果在實現介面的時候沒有指定具體的資料類 型,那麼預設為o...
關於泛型的使用
自從jdk1.5之後推出了新特性 泛型,相比於直接用list,list避免了型別轉換帶來的繁雜操作。同時在泛型的應用過程中,避免了直接使用list本類所帶來的型別轉換的錯誤,例如 list list new arraylist list.add 34 list.add 34 是可以編譯通過的,只有在...