一、使用泛型的優缺點
1.不使用泛型
優點:
創建集合時不聲明泛型,則默認為Object類型,可存儲任意的數據類型
缺點:
不安全,會引發異常
2.使用泛型
優點:
1.避免了類型轉換的麻煩,存儲的類型一致方便操作
2.把運行期的異常提升到編譯期,減少后期不必要的麻煩
缺點:
只能存儲特定的一種數據類型
二、定義含有泛型的接口
/* 定義含有泛型的接口 */
public interface GenericInterface<I> {
void method(I i);
}
public class Demo01 {
public static void main(String[] args) {
/* 在接口定義泛型,作為方法的參數使用 - 使用了匿名內部類和匿名對象 */
new GenericInterface<String>(){
@Override
public void method(String s) {
System.out.println(s);
}
}.method("小斑馬");
}
}
三、含有泛型的類和方法
1.含有泛型的類
/* 定義一個使用泛型的類 當不確定數據類型的時候可以使用泛型 創建對象時確定那種數據類型傳遞給泛型 */
public class GenericClass<E> {
private E name;
public E getName() {
return name;
}
public void setName(E name) {
this.name = name;
}
}
2.含有泛型的方法
/* 定義含有泛型的方法 格式:修飾符<泛型> 返回值類型 方法名(參數列表(使用泛型)){} */
public class GenericMethod {
public static void main(String[] args) {
method2("e");
}
//含有泛型的方法
public <M> void method1(M m){
System.out.println(m);
}
//含有泛型的靜態方法
public static <N> void method2(N n){
System.out.println(n);
}
}
3.使用含有泛型的類和方法
public class Demo01 {
public static void main(String[] args) {
demo01();
demo02();
}
/* 使用含有泛型的類 */
private static void demo01() {
GenericClass<Integer> gc1 = new GenericClass();
gc1.setName(1);
System.out.println(gc1.getName()+12);
GenericClass<String> gc2 = new GenericClass();
gc2.setName("小斑馬");
System.out.println(gc2.getName());
}
/* 使用含有泛型的方法 */
private static void demo02() {
//使用含有泛型的方法
GenericMethod gm = new GenericMethod();
gm.method1("qwer");
gm.method1(1);
//使用含有泛型的靜態方法
GenericMethod.method2(true);
GenericMethod.method2('小王');
}
}