泛型(泛型问题引出)|学习笔记

简介: 快速学习 泛型(泛型问题引出)

开发者学堂课程【【名师课堂】Java 高级开发泛型(泛型问题引出)】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/372/detail/4536


泛型(泛型问题引出)


内容介绍:

一、 什么是泛型

二、 泛型的问题引出

 

一、什么是泛型

在 JDK1.5 中泛型是一件重要的实现技术,它可以帮助我们解决程序的参数转换问题。

 

二、 泛型的问题引出

范例如下:

假设需要定义一个描述坐标的程序类 Point 类,而这个坐标类中需要提供有两个坐标属性:

X、y,对于这连个属性的内容可能有以下几种选择:

X=10、y=20;

X=10.1、y=20.2;

X= 东京 70 度、y=北纬 20 度。

现在首先要解决的问题是 Point 类中的 x 或 y 的属性类型问题,那么此时需要保存的有 int、double、string,所以在 java 里面只有一种类型可以保存所有的类型:

Object

Int 自动装箱为 Integer,Integer 自动向上转型为 Object

double 自动装箱为 double,doubler 自动向上转型为 Object

string 向上自动转型为 Object

范例:定义 Point 类

package cn.mldn.demo;

class Point i

I private object x;

private object y ;

public object getx() {

return ×;

}

public void setx(object x) {i

this.x = X;

}

public object getY() {

return y;

}

public void setY(object y) {

this.y =y;

}

}

范例:设置整型坐标

public class TestDemo i

public static void main(string[] args){

//第一步:设置数据

Point p=new Point();p.setx( 10);

p.setY(20);

//第二步:取出数据

int x = (Integer) p.getx() ;int y =(Integer) p.getY() ;

system.out.println("x=" +X+"、y="+

}

范例:设置字符串

public class TestDemo i

public static void main(string[] args){

//第一步:设置数据

Point p =new Point();p.setX("东经20度");

p.setY("北纬10度");//第二步:取出数据

String x = (String)p.getX;String y = (String)p.getY) ;

system.out. print1n( "x ="+× + "、y=" +

}

}

现在解决问题的关键是 Object,于是问题也即将出现在 Object 上。

范例:观察程序的问题

public class TestDemo i

public static void main(String[] args){

//第一步:设置数据

Point p= new Point();p.set×(10.2); //设置坐标 p.setY( "北纬10度");

//第二步:取出数据

string x=(String)p.getx() ;string y =(string) p.getY() ;

system.out.print1n( "x ="+×+"、y= "

}

这个时候由于设置方的错误,将坐标的内容设置为了 double 和 string,但是接收方不知道,它认为还是 string,所以当我们的程序一旦执行之后就将出现如下的错误提示

ClassCastException 指的是两个没有关系的对象强制转换所带来的异常,那么这个时候语法并不会对其进行任何的限制,但是执行的时候出现了程序错误,所以得出了一个结论:向下转型是不安全的操作,会带来隐患。

注意:Object 操作只是为了取出数据,一些深层次操作和 Object 是没有关系的。

相关文章
|
存储 人工智能 算法
LeetCode刷题指南(Java版)
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/81389292 这位大侠,这是我的公众号:程序员江湖。
13031 0
|
5天前
|
存储 JavaScript 前端开发
JavaScript基础
本节讲解JavaScript基础核心知识:涵盖值类型与引用类型区别、typeof检测类型及局限性、===与==差异及应用场景、内置函数与对象、原型链五规则、属性查找机制、instanceof原理,以及this指向和箭头函数中this的绑定时机。重点突出类型判断、原型继承与this机制,助力深入理解JS面向对象机制。(238字)
|
4天前
|
云安全 人工智能 安全
阿里云2026云上安全健康体检正式开启
新年启程,来为云上环境做一次“深度体检”
1600 6
|
6天前
|
安全 数据可视化 网络安全
安全无小事|阿里云先知众测,为企业筑牢防线
专为企业打造的漏洞信息收集平台
1329 2
|
5天前
|
缓存 算法 关系型数据库
深入浅出分布式 ID 生成方案:从原理到业界主流实现
本文深入探讨分布式ID的生成原理与主流解决方案,解析百度UidGenerator、滴滴TinyID及美团Leaf的核心设计,涵盖Snowflake算法、号段模式与双Buffer优化,助你掌握高并发下全局唯一ID的实现精髓。
350 160
|
5天前
|
人工智能 自然语言处理 API
n8n:流程自动化、智能化利器
流程自动化助你在重复的业务流程中节省时间,可通过自然语言直接创建工作流啦。
409 6
n8n:流程自动化、智能化利器
|
7天前
|
人工智能 API 开发工具
Skills比MCP更重要?更省钱的多!Python大佬这观点老金测了一周终于懂了
加我进AI学习群,公众号右下角“联系方式”。文末有老金开源知识库·全免费。本文详解Claude Skills为何比MCP更轻量高效:极简配置、按需加载、省90% token,适合多数场景。MCP仍适用于复杂集成,但日常任务首选Skills。推荐先用SKILL.md解决,再考虑协议。附实测对比与配置建议,助你提升效率,节省精力。关注老金,一起玩转AI工具。
|
14天前
|
机器学习/深度学习 安全 API
MAI-UI 开源:通用 GUI 智能体基座登顶 SOTA!
MAI-UI是通义实验室推出的全尺寸GUI智能体基座模型,原生集成用户交互、MCP工具调用与端云协同能力。支持跨App操作、模糊语义理解与主动提问澄清,通过大规模在线强化学习实现复杂任务自动化,在出行、办公等高频场景中表现卓越,已登顶ScreenSpot-Pro、MobileWorld等多项SOTA评测。
1555 7
|
4天前
|
Linux 数据库
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程
本文介绍在CentOS 7.9环境下安装PolarDB-X单机版数据库的完整流程,涵盖系统环境准备、本地Yum源配置、RPM包安装、用户与目录初始化、依赖库解决、数据库启动及客户端连接等步骤,助您快速部署运行PolarDB-X。
252 1
Linux 环境 Polardb-X 数据库 单机版 rpm 包 安装教程