當前位置:首頁 » 編程語言 » java介面泛型

java介面泛型

發布時間: 2022-09-07 02:01:22

java介面內定義泛型方法如何實現

介面 IHuman.java

public interface IHuman<K, V> {
V execute(K request) throws Exception;
}

實現 MaleHuman.java
public class MaleHuman implements IHuman<String, String> {
@Override
public String execute(String request) throws Exception {
return ...;
}
}

按照以上介面內的泛型方法,能進行子類實現也不會報錯。
但是介面內的泛型方法換種寫法,就不知道如何寫實現了。
介面 IHuman.java (改)
public interface IHuman {
<K, V> V execute(K request) throws Exception;
}

⑵ java泛型介面是怎麼一回事,干什麼用的

這個啊 泛型好處多了。
有了泛型 你可以再hashtable中存任何類型的value 包括自定義的類

例如。有一個類是 class client{}

Hashtable<String ,client> ht = new Hashtable<String ,client>();

很方便的東西。讓你代碼更完美的。

=============================接話獻佛========================
應該是我很久沒有好好學技術了,有時候想用的時候卻發現不會寫,比如今天遇到了泛型介面,所以要記錄一下,這樣才能更明白...
在這里我並不想說泛型介面怎麼寫,這個很簡單,後面會寫的,只是想說我為什麼要用.
泛型介面的意圖是什麼?請看如下的問題:

Java代碼
abstract class BaseBean{
//略
}

Interface IA{
public BaseBean doSomething();
}

下面我們繼承這個BaseBean
Java代碼
class ChildBean extends BaseBean{

}

接下來實現介面
Java代碼
class IAImpl implements IA{
public BaseBean doSomething(){
return new ChildBean();
}
}

好了這是慣常的寫法,但是同學們有沒有發現一個問題當你返回得到BaseBean的時候其實你需要的是他的實例而不是這個真實的Bean,而當你強轉時又需要注意兩點: NullPoint 和 類型是否對,這個很麻煩,因為調用者完全不知道調用什麼.那麼我們來描述我們需要什麼:
我們需要IA的doSomething返回的是一個對象這個對象extends於BaseBean

那麼接下來我們就用泛型介面吧:
Java代碼
Interface IA<T extends BaseBean>{
public T doSomething();
}

class IAImpl implements IA<ChildBean>{
public ChildBean doSomething(){
return new ChildBean();
}
}

這樣當你調用這個實現的時候就能明確地得到返回的對象類型,清楚明了,這就是泛型介面的使用.其實我們平時一直在用的 Iterable就是這玩意大家可以去看下. 回家准備讀下java編程思想中的相關段落.
總結今天收獲很大,這里要感謝下靈芝同學給我的幫助,是她告訴了我,我所想要的東西叫泛型介面,感謝...
下次等我把泛型都再重新回爐下,再來把泛型的其他東西講來聽聽...

⑶ java中什麼是泛型,怎麼用泛型

最簡單的運用:List<String> list = new ArrayList<String>();
這個是什麼意思?
意思就是list只裝String類型的數據,別的,裝不進去
然後你就會覺得這個好像有點封裝的意思,比如LIst<Student>,封裝學生類
所以,所謂泛型就是廣泛的數據類型,你可以把它理解成封裝

⑷ java中介面具有泛型,繼承的時候該怎麼處理

大部分java離得介面好像都是泛型吧?
class test implements 介面<對象(例如String,Integer等等)>

⑸ java泛型有什麼作用

java 泛型是java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。這種參數類型可以用在類、介面和方法的創建中,分別稱為泛型類、泛型介面、泛型方法。
泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。
可以在集合框架(Collection framework)中看到泛型的動機。例如,Map 類允許您向一個 Map 添加任意類的對象,即使最常見的情況是在給定映射(map)中保存某個特定類型(比如 String)的對象。
因為 Map.get() 被定義為返回 Object,所以一般必須將 Map.get() 的結果強制類型轉換為期望的類型,如下面的代碼所示:

Map m = new HashMap();
m.put("key", "blarg");
String s = (String) m.get("key");

要讓程序通過編譯,必須將 get() 的結果強制類型轉換為 String,並且希望結果真的是一個 String。但是有可能某人已經在該映射中保存了不是 String 的東西,這樣的話,上面的代碼將會拋出 ClassCastException。
理想情況下,您可能會得出這樣一個觀點,即 m 是一個 Map,它將 String 鍵映射到 String 值。這可以讓您消除代碼中的強制類型轉換,同時獲得一個附加的類型檢查層,該檢查層可以防止有人將錯誤類型的鍵或值保存在集合中。這就是泛型所做的工作。

泛型的好處
Java 語言中引入泛型是一個較大的功能增強。不僅語言、類型系統和編譯器有了較大的變化,以支持泛型,而且類庫也進行了大翻修,所以許多重要的類,比如集合框架,都已經成為泛型化的了。
這帶來了很多好處:
1,類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變數的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者如果幸運的話,還存在於代碼注釋中)。
2,消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。
3,潛在的性能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的位元組碼中。但是更多類型信息可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。由於泛型的實現方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制類型轉換)時所寫的代碼,只是更能確保類型安全而已。

Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。
泛型在使用中還有一些規則和限制:
1、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
2、同一種泛型可以對應多個版本(因為參數類型是不確定的),不同版本的泛型類實例是不兼容的。
3、泛型的類型參數可以有多個。
4、泛型的參數類型可以使用extends語句,例如<T extends superclass>。習慣上成為「有界類型」。
5、泛型的參數類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);
泛 型還有介面、方法等等,內容很多,需要花費一番功夫才能理解掌握並熟練應用。在此給出我曾經了解泛型時候寫出的兩個例子(根據看的印象寫的),實現同樣的 功能,一個使用了泛型,一個沒有使用,通過對比,可以很快學會泛型的應用,學會這個基本上學會了泛型70%的內容。

⑹ java中泛型指的是什麼

我來簡述一下泛型的知識吧:

如果一個類的後面跟上一個尖括弧,表示這個類是泛型類.

可以這樣聲明:class 名稱<泛型列表>
如:class A<E>
其中A是泛型類的名稱,E是泛型.(可以是任何對象或介面)

其中給出的泛型可以作為類的成員變數的類型,方法的類型以及局部變數的類型.類體和變通類完全一樣,由成員變數和方法構成.

舉個例子:
class Chorus<E,F>
{
void makeChorus(E person,F yueqi)
{
yueqi.toString();
person.toString() ;
}
}
--------------
上面的類中將類E和類F作為類Chorus的一部分來使用.這就是泛型類的目的,將多個類包含進一個類來使用!!!

如果你想深入理解就可以找一些書來看,一些基本的教材裡面也都有提到泛型的.

希望我說的對你有所幫助!!!

⑺ Java的泛型怎麼理解

1. 泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。分為泛型類、泛型介面、泛型方法。 Java語言引入泛型的好處是安全簡單。
2. 、沒有泛型的情況的下,通過對類型Object的引用來實現參數的「任意化」,「任意化」帶來的缺點是要做顯式的強制類型轉換,而這種轉換是要求開發者對實際參數類型可以預知的情況下進行的。對於強制類型轉換錯誤的情況,編譯器可能不提示錯誤,在運行的時候才出現異常,這是一個安全隱患。
3 . 泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,以提高代碼的重用率。

⑻ 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編程題:請按照下列提示編寫一個泛型介面以及其實現類

Generic.java:
package com.example.demo;

public interface Generic<T> {

void get(T t);
}

GenericImpl.java:

package com.example.demo;

public class GenericImpl<T> implements Generic<T> {

@Override
public void get(T t) {

}
}

⑽ Java泛型 繼承介面相關問題

當然正確。
FifoCache是一個泛型類,V由在創建此類的實例時指定具體類型,再傳給介面中的V,而介面interface Cache<K,V>中的K已顯式指定為String類型。因此,在創建此類的實例時,介面interface Cache<K,V>中的K,V都已指定了具體的類型,當然正確。

熱點內容
谷能壓縮機 發布:2025-01-13 15:44:30 瀏覽:412
電腦電腦直連通訊ftp 發布:2025-01-13 15:38:03 瀏覽:717
nvm存儲 發布:2025-01-13 15:36:19 瀏覽:552
京東架構師緩存經驗 發布:2025-01-13 15:33:00 瀏覽:726
android圖片顏色 發布:2025-01-13 15:26:09 瀏覽:268
國家稅務總局電腦伺服器 發布:2025-01-13 15:10:24 瀏覽:596
金立老款機的開機密碼是多少 發布:2025-01-13 15:04:45 瀏覽:456
湖南網上辦稅初始密碼多少 發布:2025-01-13 15:02:49 瀏覽:417
怎麼使用筆記本連接伺服器 發布:2025-01-13 15:02:48 瀏覽:705
長城cs75plus選哪個配置 發布:2025-01-13 14:54:05 瀏覽:22