萬用字元和泛型介面簡單使用

2021-09-24 01:48:18 字數 2412 閱讀 4868

2. 泛型介面

在程式中追加了泛型之後,可以避免classcastexception的問題,但是又會產生新的情況:引數的統一的問題。

舉例:方法中的引數型別與接收到的引數型別不匹配

public

class

testmessage

//此處方法引數的message泛型型別是string

private

static

void

fun(message

message)

}class

message

public t getmessage()

@override

public string tostring()

';}}

那麼為了解決上述問題,可以接受所有的泛型型別,又不能讓使用者隨意修改,這種情況下就要使用萬用字元來處理

舉例:使用萬用字元

public

class

testmessage

//其中?可以表示任意型別,但是因為不確定型別,所以無法進行修改

private

static

void

fun(message<

?> message)

}

在萬用字元的基礎上,又產生了兩子萬用字元。泛型上限和泛型下限。

舉例1:方法使用泛型上限

public

class

testmessage

// 因為string類被final修飾,所以沒有子類,此處只能放string

private

static

void

fun(message<

?extends

string

> message)

}

舉例2:方法使用泛型上限

public

class

testmessage

private

static

void

fun(message<

?extends

charsequence

> message)

}

以下是charsequence的已知實現類:

舉例:類使用泛型上限

public

class

point6

charsequence

>

public t getx()

public

void

sety

(t y)

public t gety()

@override

public string tostring()

';}public

static

void

main

(string[

] args)

}

舉例:使用泛型下限

public

class

testmessage

private

static

void

fun(message<

?super string> message)

}

總結:上限可以用在宣告,不能修改;

下限只能用在方法引數中,不能使用在泛型類中,可以修改內容

定義乙個泛型介面:

inte***ce imessage
舉例:使用泛型介面

public

inte***ce

imessage

}//繼承原來的型別

class

qqmessage

implements

imessage

}//指定新的型別

class

msnmessage

implements

imessage

}

舉例:使用匿名內部類

public

inte***ce

imessage

}.print

("hello");

}}

泛型(萬用字元)

1 宣告好泛型型別之後,集合中只能存放特定型別元素 2 泛型型別必須是引用型別 3 使用泛型後取出元素不需要型別轉換.泛型函式 當函式中使用了乙個不明確的資料型別,那麼在函式上就可以進行泛型的定義。public 泛型的宣告 返回值型別 函式名 泛型 變數名 泛型類 修飾符 class 類名 泛型 泛...

泛型 萬用字元

利用泛型技術雖然解決了向下轉型所帶來的安全隱患問題,但同時又會產生乙個新的問題 即便是同乙個類,但是由於設定泛型型別的不同,那麼其物件表示的含義也是不同,是不能夠直接進行引用操作的,例如 現在有如下乙個類。class message public t getmsg 使用萬用字元 解決引數傳遞問題 p...

泛型萬用字元

萬用字元 叫做萬用字元上限,比如當乙個集合的元素型別使用?號統配符的時候,表示在向這個集合是所有集合的父類。例如如下 public static void test2 list ls test public void test1 extends t 表示 一定t 的子類或者t的本身,看如下 publ...