泛型使用场景
1 泛型集合
public class ArrayList<E>{
}
对E这个类型进行操作。
2 泛型类
public class FanXing<T> {
public T t;
public T getT() {
return t;
}
public FanXing(T t) {
this.t = t;
}
public static void main(String[] args) {
FanXing<String> fx1 = new FanXing<>("a");
FanXing<Integer> fx2 = new FanXing<>(1);
System.out.println(fx1.getT().getClass()); //java.lang.String
System.out.println(fx2.getT().getClass()); //java.lang.Integer
}
}
直接利用泛型来定义成员变量。
3 泛型接口
public interface IFanXing<T1, T2> {
T1 show1(T2 t);
T2 show2(T1 t);
}
public class FanXing implements IFanXing<String, Integer> {
@Override
public String show1(Integer t) {
return String.valueOf(t);
}
@Override
public Integer show2(String t) {
return Integer.valueOf(t);
}
public static void main(String[] args) {
FanXing fanXing = new FanXing();
System.out.println(fanXing.show1(1)); //1
System.out.println(fanXing.show2("1")); //1
}
}
直接利用泛型来定义参数类型。
4 泛型方法
定义泛型方法只需将泛型参数列表置于返回值之前;利用泛型来定义参数类型。
4-1 普通泛型方法
public class FanXing {
public <T> void f(T t){
System.out.println(t.getClass().getName());
}
public static void main(String[] args) {
FanXing fanXing = new FanXing();
fanXing.f(""); //java.lang.String
fanXing.f(1); //java.lang.Integer
fanXing.f(1.0); //java.lang.Double
fanXing.f(1.0F); //java.lang.Float
fanXing.f('a'); //java.lang.Character
}
}
4-2 静态泛型方法
静态方法无法访问泛型类的类型参数,如果方法需要使用泛型能力,就必须使其成为泛型方法。
public static <T> void f(T t){
System.out.println(t.getClass().getName());
}
public static void main(String[] args) {
FanXing.f(""); //java.lang.String
FanXing.f(1); //java.lang.Integer
FanXing.f(1.0); //java.lang.Double
FanXing.f(1.0F); //java.lang.Float
FanXing.f('a'); //java.lang.Character
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 提示词工程——AI应用必不可少的技术
· 字符编码:从基础到乱码解决
· 地球OL攻略 —— 某应届生求职总结