泛型
泛型
简介
泛型是JDK1.5中引入的新特性 ,本质是参数化类型,即把类型作为参数传递
常见形式有泛型类,泛型接口和泛型方法
语法
<T,...> T称为类型占位符,表示一种引用类型
好处
提高代码的重用性
防止类型异常转换,提高代码的安全性
实践
泛型类
语法:类名
注意:泛型变量不能实例化
package com.qianfeng.collection;
/**
* 功能描述
*
* @since 2022-05-10
*/
public class GenericClassDemo<T> {
T t;
void show(T t) {
System.out.println(t);
}
T getT() {
return t;
}
public static void main(String[] args) {
GenericClassDemo<String> demo = new GenericClassDemo<>();
demo.t = "b";
demo.show("a");
System.out.println(demo.getT());
GenericClassDemo<Integer> demo1 = new GenericClassDemo<>();
demo1.t = 20;
demo1.show(100);
System.out.println(demo1.getT());
}
}
泛型接口
语法:接口名
注意:接口中不可以使用泛型变量作为静态常量
package com.qianfeng.collection;
/**
* 功能描述
*
* @since 2022-05-10
*/
public interface GenericInterfaceDemo<T> {
void show(T t);
}
package com.qianfeng.collection;
/**
* 功能描述
*
* @since 2022-05-10
*/
public class GenericInterfaceDemoImpl implements GenericInterfaceDemo<String> {
@Override
public void show(String s) {
System.out.println(s);
}
public static void main(String[] args) {
GenericInterfaceDemoImpl demo = new GenericInterfaceDemoImpl();
demo.show("haha");
}
}
package com.qianfeng.collection;
/**
* 功能描述
*
* @since 2022-05-10
*/
public class GenericInterfaceDemoImpl2<T> implements GenericInterfaceDemo<T> {
@Override
public void show(T t) {
System.out.println(t);
}
public static void main(String[] args) {
GenericInterfaceDemoImpl2<String> demoImpl2 = new GenericInterfaceDemoImpl2<>();
demoImpl2.show("we");
GenericInterfaceDemoImpl2<Integer> demoImpl3 = new GenericInterfaceDemoImpl2<>();
demoImpl3.show(500);
}
}
泛型方法
语法:
方法实现
}
package com.qianfeng.collection;
/**
* 功能描述
*
* @since 2022-05-11
*/
public class GenericMethodDemo {
<T> void show(T t) {
System.out.println(t);
}
<T> T get(T t) {
return t;
}
public static void main(String[] args) {
GenericMethodDemo methodDemo = new GenericMethodDemo();
methodDemo.show(200);
methodDemo.show("String");
System.out.println(methodDemo.get(200));
System.out.println(methodDemo.get("String"));
}
}