56 java集合和泛型_6 _泛型概述
文章目錄
- 56 java集合和泛型_6 _泛型概述
- 泛型
- 泛型類
- 泛型接口
- 泛型方法
泛型
- Java泛型是JDK1.5中引入的一個新特性,其本質是參數化類型,把類型作為參數傳遞。
- 常見形式有泛型類、泛型接口、泛型方法。
- 文法:
- T<…> T稱為類型占位符,表示一種引用類型。
- 好處:
- 提高代碼的重用性
- 防止類型轉換異常,提高代碼的安全性
泛型類
- 文法:類名, T稱為類型占位符,表示一種引用類型,如果編寫多個,要用逗号隔開
- 注意點:
- 泛型隻能使用引用類型
- 不同泛型對象之間不能互相指派
代碼:
package com.wlw.collection.generic;
/**
* 泛型類
* 文法:類名<T>, T稱為類型占位符,表示一種引用類型,如果編寫多個,要用逗号隔開
*/
public class MyGeneric<T> {
//1.建立變量,(可以建立變量,但不能執行個體化,就是不能new)
T t;
//2.T 可以作為方法參數
public void show(T t){
System.out.println(t);
}
//3.T 作為傳回值
public T getT(){
return t;
}
}
package com.wlw.collection.generic;
/*
1.泛型隻能使用引用類型
2.不同泛型類型對象之間不能互相指派
*/
public class TestGeneric {
public static void main(String[] args) {
MyGeneric<String> myDeneric1 = new MyGeneric<String>();
myDeneric1.t = "hello";
myDeneric1.show("hello everyone!");
System.out.println(myDeneric1.getT());
System.out.println("------------------------------");
MyGeneric<Integer> myGeneric2 = new MyGeneric<Integer>();
myGeneric2.t = 200;
myGeneric2.show(300);
System.out.println(myGeneric2.getT());
//MyGeneric<String> myGeneric3 = myGeneric2; //不同泛型類型對象之間不能互相指派
}
}
/*
hello everyone!
hello
------------------------------
300
200
*/
泛型接口
- 文法:接口名
- 注意點:不能使用泛型建立靜态常量
- 泛型接口的實作方式有兩種:
- 定義一個實作類,直接寫出泛型
- 定義一個泛型類,來實作這個泛型接口
package com.wlw.collection.generic;
/**
* 泛型接口
* 文法:接口名<T>
* 注意點:不能使用泛型建立靜态常量
*/
public interface MyInterface<T> {
String name = "張三";
public T service(T t);
}
package com.wlw.collection.generic;
public class MyInterfaceImpl implements MyInterface<String>{
@Override
public String service(String s) {
return s;
}
}
package com.wlw.collection.generic;
public class MyInterfaceImpl2<T> implements MyInterface<T> {
@Override
public T service(T t) {
return t;
}
}
package com.wlw.collection.generic;
public class TestGeneric {
public static void main(String[] args) {
MyInterfaceImpl myInterfaceImpl = new MyInterfaceImpl();
System.out.println(myInterfaceImpl.service("大家好!"));
MyInterfaceImpl2<Integer> myInterfaceImpl2 = new MyInterfaceImpl2<Integer>();
System.out.println(myInterfaceImpl2.service(200));
}
}
/*
大家好!
200
*/
泛型方法
- 文法: 傳回值類型
package com.wlw.collection.generic;
/**
* 泛型方法
* 文法:<T> 傳回值類型
*/
public class MyGenericMethod {
public <T> T show(T t){
System.out.println("泛型方法:"+t);
return t;
}
}
package com.wlw.collection.generic;
/*
1.泛型隻能使用引用類型
2.不同泛型類型對象之間不能互相指派
*/
public class TestGeneric {
public static void main(String[] args) {
//泛型方法
MyGenericMethod myGenericMethod = new MyGenericMethod();
String s = myGenericMethod.show("中國加油!");
Integer integer = myGenericMethod.show(200);
Double d = myGenericMethod.show(3.14);
}
}
/*
泛型方法:中國加油!
泛型方法:200
泛型方法:3.14
*/