泛型的一些問題

2021-09-28 22:52:49 字數 2021 閱讀 3163

泛型的概念:把型別明確工作推遲到建立物件或者呼叫方法時才明確的一種機制;

泛型的語法 : 《引用型別,引用型別…>

使用泛型好處是避免了向下轉型,例如集合中的元素:

//如果不使用泛型,取出元素後,需要向下轉型成為本類才可以獲得;

arraylist arraylist =

newarraylist()

; arraylist.

add(

"abc");

arraylist.

add(

"abc");

arraylist.

add(

"abc");

arraylist.

add(

"abc");

object obj = arraylist.

get(0)

; string string=

(string) obj;

//使用泛型後,就可以直接取出元素;

arraylist

list2 =

newarraylist

(); list2.

add(

"abc");

list2.

add(

"abc");

list2.

add(

"abc");

list2.

add(

"abc");

string s = list2.

get(0)

; system.out.

println

(s);

泛型也可以應用到類,方法和介面上:

2.1.類:

//定義的泛型demo類,指的是成員變數型別為泛型;

public

class

demo

public

void

setobject

(t object)

}//測試類:

public

class

mytest

}

2.2. 介面:

//建立泛型到介面上,介面中方法的返回值和形參都是泛型,等到實現介面時,才明確具體的型別;

public

inte***ce

myinte***ce

//1. 建立匿名內部類時明確介面上的型別:

public

class

mytest};

}//2. 或者實現泛型介面時明確:

public

class

sonimplements

myinte***ce

}//3. 泛型類也可以實現泛型介面,最後可以在測試類main函式裡建立該類物件,明確該介面型別:

public

class

son2

implements

myinte***ce

}public

class

mytest

}

3.3. 方法:

public

class

mytest

}class

myutils

}

注意:<?>為泛型萬用字元

public

class

mytest2

}class

person

class

student

extends

person

class

doctor

extends

person

class

nurse

extends

person

泛型的一些理解

泛型是為了解決型別不確定的問題,業務邏輯相同只有物件型別不同。是屬於編譯期的,編譯器編譯完之後,帶有泛型的程式,生成的.class位元組碼檔案中將不存在泛型。以此使程式在執行時效率不受影響,這個過程被稱為泛型 擦除 泛型泛型又可以分為集合泛型和自定義泛型。一 集合泛型 list list1 new ...

stl 泛型的一些基本

一 泛型程式設計的一些基本 1 泛型程式設計 1.1 程式盡可能的通用。1.2 將演算法從資料結構中抽象出來,成為通用。1.3 模板並不是單純的函式,不能憑空的生成,是用來產生 的 可以減少 量。1.4 template 中不要使用class,使用typename 1.5 模板程式設計與巨集的區別 ...

String 一些問題

前言 等號 對於基本型別,比較的是值,對於引用型別,比較的是記憶體位址。1.在物件池中建立,如果常量池中已經存在則返回常量池中已經有的。private static void test1 結果 true 2.乙個在string pool中,乙個在堆中。private static void test...