Java——容器(泛型)
2024-08-29 06:49:58
【泛型】
起因:JDK1.4之前类型不明确
<1>装入集合的类型都被当做Object对待,从而失去自己的实际类型。
<2>从集合中取出时往往需要转型,效率低,且很容易出错。
解决办法:
<1>在定义集合的时候同时定义集合中对象的类型
----实例程序:
List<String> c = new ArrayList<String>();
//原本传入的强制转换为Object类型,这里不需要了,直接限定为String类型
c.add("aa");
c.add("bb");
c.add("cc");
for(int i=0;i<c.size();i++){
String c = c.get(i);
System.out.println(c);
}
好处:增强程序的可读性和稳定性
【普通泛型】
package com.company.section1;
public class Client {
//工资低于2500元的上斑族并且站立的乘客车票打8折
public static <T extends Staff & Passenger> void discount(T t){
if(t.getSalary()<2500 && t.isStanding()){
System.out.println("恭喜你!您的车票打八折!");
}
}
//这里使用泛型编程,因为传入的参数有两种类型:int,boolean,这样可以实现不同数据类型的操作。
public static void main(String[] args) {
discount(new Me());
}
}
discount(new Me());
}
}
//职员
interface Staff{
//工资
public int getSalary();
}
//乘客
interface Passenger{
//是否是站立状态
public boolean isStanding();
}
class Me implements Staff,Passenger{
public boolean isStanding(){
return true;
}
public int getSalary() {
return 2000;
}
}
最新文章
- C#转义字符(Z)
- CentOS_7.2服务器前期
- 安卓开发NDK环境搭建
- Git 远程操作详解
- [转]GLES 3.0 新特性
- python调试 设置断点
- Linux串口c_cc[VTIME]和c_cc[VMIN]属性设置的作用
- nodejs js模块加载
- 《ArcGIS Engine+C#实例开发教程》第八讲 属性数据表的查询显示
- Java 热部署深入探索
- JQ each
- Oracle 经常使用命令小结
- Spring 基础知识(一)基本概念 DI、IOC、AOP
- 【锁】Oracle死锁(DeadLock)的分类及其模拟
- Linux----版本选择
- 服务发现系统etcd之安装和使用
- onsrcoll和scrollTop兼容与实现
- 重温jQuery
- 实验楼学习linux第一章第三节用户及文件权限管理
- 使用python处理selenium中的css_selector定位元素的模糊匹配问题
热门文章
- C++:输入n个数,通过气泡法从小到大排列顺序(掌握不熟,还请谅解)
- spark MLlib矩阵四则运算,线性代数
- 【Linux开发】【Qt开发】交叉编译器 arm-linux-gnueabi 和 arm-linux-gnueabihf 的区别
- Golang基本类型整理
- Python-自定义函数-参数
- [转帖]mysql.sock的作用
- js获取url中的参数(解决中文乱码)
- JetBrains下载历史版本
- Linux部署项目 shell脚本启动 及 Centos7开放指定端口
- windows和linux安装rabbitmq