泛型類 與泛型方法 混合使用
靜態方法 與 泛型
package javabasis.fanxing;
import org.junit.Test;
/*
*
* 泛型類與泛型方法的混合使用
* 1. 泛型類對應的方法 及 泛型方法區別
* 2. 參數定義名稱
* 3. 靜態方法使用泛型
*
* */
class FanXingClassAndMethod<T> {
private T param;
public FanXingClassAndMethod(T param) {
this.param = param;
}
//泛型類中的方法,非泛型方法
public T getParam11(T param) {
this.param = param;
return param;
}
//泛型方法
public <T> T getParam21(T param) {
return param;
}
//此方法用於對比, 編譯器直接會報異常,因為此方法是依附於泛型類定義的,沒有K類型,只有T類型
// public K getParam12(K param) {
// return param;
// }
//泛型方法 可以定義K不受泛型類影響
public <K> K getParam22(K param) {
return param;
}
//靜態方法 使用泛型,只能聲明為泛型方法,無法依托於泛型類,因為靜態方法早於類編譯
public static <T> T staticMethod(T param) {
return param;
}
}
public class NO3FanXing1 {
@Test
public void test() {
/*
* 1. 泛型類中的方法與 泛型方法比較
* */
FanXingClassAndMethod<Integer> fanXingClassAndMethod = new FanXingClassAndMethod<>(456);
//泛類中的方法,類型限制為Integer,無法是String
fanXingClassAndMethod.getParam11(454545);
// fanXingClassAndMethod.getParam11("dsfadfsf");
//泛型類方法則不受限制
fanXingClassAndMethod.getParam21("123123213");
}
}