泛型(2021-10-28)
泛型的作用是,允许类中属性、类中方法的参数和返回值在创建对象时动态决定,在类中用大写字母作为占位符(可以声明多个)。
泛型出现之后,一个类就可以处理多种数据类型。之前用Object也可以实现,但向下转型可能运行时发生ClassCastException,而泛型出错在编译时就能发现。
泛型只能处理引用数据类型,如包装类。
泛型通配符"?",允许接收任意泛型并获取其中数据(不允许修改)。还有额外功能 ,"? extends 类名"设置泛型的上限 , "? super 类名"设置泛型的下限。
下面是1个简单例子:
package package1;
public class Point<T> { //坐标类
private T x;
private T y;
public Point(){}
public Point(T x,T y){
this.x=x;
this.y=y;
}
public void setX(T x){
this.x=x;
}
public void setY(T y){
this.y=y;
}
public T getX(){
return this.x;
}
public T getY(){
return this.y;
}
}
package package1;
public class Main {
public static void main(String[] args) {
Point<Integer> pointA = new Point<>(); //指定数据类型只对当前对象生效
pointA.setX(5);
pointA.setY(10);
System.out.println("[整型坐标]横坐标为: " + pointA.getX() + " 、纵坐标为: " + pointA.getY());
Point<String> pointB = new Point<>();
pointB.setX("东经60度");
pointB.setY("北纬30度");
System.out.println("[字符串坐标]横坐标为: " + pointB.getX() + " 、纵坐标为: " + pointB.getY());
}
}
运行结果:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?