JAVA基础之泛型编程
来源:互联网 发布:java 12306验证码识别 编辑:程序博客网 时间:2024/05/23 09:41
一、什么是泛型?
所谓的泛型是指 允许在定义类、接口、方法时使用类型参数,这个类型参数将在 声明变量、创建对象、调用方法时动态地指定。
泛型类相当于一个模板,在编译期无法确定具体的类型,只有在创建对象时候需要动态指定具体的类型。
注意点:
1、泛型不能用在静态属性上
2、泛型使用时要传入具体的引用数据类型 不能是基本数据类型
二、自定义泛型类、泛型接口、泛型方法
① 自定义泛型类
泛型字母:一般情况是大写字母,常见的泛型字母:
T----type
E----Element
K----key
V----value
public class Location<T> {private T x;private T y;public Location(T x, T y) {super();this.x = x;this.y = y;}public Location() {super();}public T getX() {return x;}public void setX(T x) {this.x = x;}public T getY() {return y;}public void setY(T y) {this.y = y;}@Overridepublic String toString() {return "Location [x=" + x + ", y=" + y + "]";}}public class GeneicDemo {public static void main(String[] args) {Location<String> location = new Location<String>("北纬30度1分","东经30度4分");System.out.println(location);Location<Double> location1 = new Location<Double>(30.1,30.4);System.out.println(location1);}}
② 自定义泛型接口
public class MyComparable<T>{ T test(T t);}
③ 自定义泛型方法
泛型字母放在方法的访问修饰符后,返回类型之前
public class GenericMethod {private <T> void test_1(T t){System.out.println(t);}public static void main(String[] args) {new GenericMethod().test_1(1515);new GenericMethod().test_2("15","58","69","54");}private <T> void test_2(T...t){for(T i:t){System.out.println(i);}}}三、泛型通配符
1、?:表示不确定的类型
只能用在变量的声明上(包括方法的形参)
不能用在实例化的过程中 不能用在创建泛型类/接口/方法上
2、泛型的上限
设置类型通配符的上限<? extends ClassName> ClassName 是通配符'?'的上限 表示<=
1、一般用于限制某个操作
2、不能使用在添加数据 一般都是对数据的读取
3、泛型的下限
设置类型通配符的下限<? super ClassName> ClassName 是通配符'?'的下限 表示>=
public class WildCardsDemo01 {public static void main(String[] args) {List<? extends People> list0 = new ArrayList<People>();List<? extends People> list1 = new ArrayList<Chinese>();List<? extends People> list2 = new ArrayList<CXSWPeople>();List<? super People> list3 = new ArrayList<People>();List<? super People> list4 = new ArrayList<Object>();}}class People{}class Chinese extends People{}class American extends People{}class CXSWPeople extends People{}
阅读全文
0 0
- JAVA基础之泛型编程
- java基础之网络编程泛型及API
- Java网络编程之基础
- java基础之 网络编程
- java基础之GUI编程
- java基础之GUI编程
- Java基础之网络编程
- JAVA基础之网络编程
- JAVA基础之网络编程
- java编程基础之克隆
- java基础之网络编程
- java基础之-网络编程
- Java基础之网络编程
- java基础之 网络编程
- Java基础之网络编程
- java基础之网络编程 .
- Java基础之网络编程
- java基础之网络编程
- ThreadLocal与Inheritable ThreadLocal
- nyoj 27 水池数目 搜索
- Java List<Bean> 分组转换
- Python之argparse
- jbpm(2)---搭建jbpm开发环境
- JAVA基础之泛型编程
- menuconfig详解(4)——IO Schedulers
- linux文件系统及管理
- kfka学习笔记二:使用Python操作Kafka
- [JavaScript]ECMA-262-3 深入解析.第二章.变量对象
- android MultiDex配置突破64K方法数限制
- 用angular做一个前往顶部的按钮
- 【学术篇】不知道该起啥标题了怎么办OvO
- centOS+nginx 搭建SFTP服务实现上传和nginx访问资源