Java面向对象之泛型
主要介绍:
- 认识泛型
- 构造方法中使用泛型
- 设置多个泛型
- 通配符
- 泛型接口
- 泛型方法
- 泛型数组
一、认识泛型

具体实例如下:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 认识泛型
* version: 1.0
*/
public class GenericDemo01 {
public static void main(String[] args) {
Point<Integer> p = new Point<>();
p.setX(0);
p.setY(12);
int px = p.getX();
int py = p.getY(); System.out.println("px = " + px +" py = " + py);
} static class Point<T> {
private T x;
private T y; 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;
}
}
}
运行结果:

二、构造方法中使用泛型

具体实例如下:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 构造方法中使用泛型
* version: 1.0
*/
public class GenericDemo02 {
public static void main(String[] args) {
Con<String> con = new Con<>("构造方法中使用泛型 huolongluo");
System.out.println(con.getValue());
} static class Con<T> {
private T value; public Con(T value) {
this.value = value;
} public T getValue() {
return value;
} public void setValue(T value) {
this.value = value;
}
}
}
运行结果:

三、指定多个泛型

具体实例如下:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 指定多个泛型
* version: 1.0
*/
public class GenericDemo03 {
public static void main(String[] args) {
Gen<String, Integer> gen = new Gen<>();
gen.setKey("火龙裸");
gen.setTake(200);
System.out.println(gen.getKey() + " " + gen.getTake());
} static class Gen<K, T> {
private K key;
private T take; public K getKey() {
return key;
} public void setKey(K key) {
this.key = key;
} public T getTake() {
return take;
} public void setTake(T take) {
this.take = take;
}
}
}
运行结果:

四、通配符
通配符比较简单,直接通过实例进行展示:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 通配符 : ?
* version: 1.0
*/
public class GenericDemo04 {
public static void main(String[] args) {
Info<String> info = new Info<>();
info.setKey("我是火龙裸");
tell(info);
} /**
* 通配符 : ?
* */
public static void tell(Info<?> i) {
System.out.println("打印:" + i);
} static class Info<T> {
private T key; public T getKey() {
return key;
} public void setKey(T key) {
this.key = key;
} @Override
public String toString() {
return "Info{" +
"key=" + key +
'}';
}
}
}
运行结果:

五、泛型在接口当中使用

具体实例如下:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 泛型在接口当中的使用
* version: 1.0
*/
public class GenericDemo05 {
public static void main(String[] args) {
Gin gin = new Gin("我是火龙裸");
System.out.println(gin.getInfo());
} interface GenInter<T> {
void say();
} static class Gin<T> implements GenInter<T> {
private T info; public Gin(T info) {
this.info = info;
} public T getInfo() {
return info;
} public void setInfo(T info) {
this.info = info;
} @Override
public void say() { }
}
}
运行结果:

六、泛型方法

具体实例如下:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 泛型方法
* version: 1.0
*/
public class GenericDemo06 {
public static void main(String[] args) {
Gener gener = new Gener(); String str = gener.tell("我是huolongluo");
System.out.println(str); int i = gener.tell(1200);
System.out.println(i);
} static class Gener {
public <T> T tell(T t) {
return t;
}
}
}
运行结果:

七、泛型数组
泛型数组的使用,其实跟泛型犯法,是要相搭配来使用的。

具体实例如下:
package com.huolongluo.newfeatures; /**
* Created by 火龙裸 on 2019/7/5.
* desc : 泛型数组
* version: 1.0
*/
public class GenericDemo07 {
public static void main(String[] args) {
String arr0[] = {"www", "huolongluo", "com"};
tell(arr0); Integer arr1[] = {1, 2, 3, 4};
tell(arr1);
} static <T>void tell(T arr[]) {
for (int i = 0; i < arr.length; i++) {
System.out.println(arr[i]);
}
}
}
运行结果:

OK,一气呵成。程序员,抛砖引玉很重要。
Java面向对象之泛型的更多相关文章
- 3. Java面向对象之泛型-指定多个泛型
3. Java面向对象之泛型-指定多个泛型 package generic; class MutiGeneric<K, T> { private K key; private T take ...
- 2. Java面向对象之泛型-构造方法中使用
package generic; class Construtgeneric<T> { private T value; public Construtgeneric(T value) { ...
- 1. Java面向对象之泛型-认识泛型
package generic; class Point{ private Object x; private Object y; public Object getX() { return x; ...
- java面向对象的核心思想
java面向对象的特征之一:封装 1.封装性的使用 package edu.tongji.classdemo; /* 封装性 1.封装的目的:保护某些属性和方法不被外部所见 2.封装的实现 为属性和方 ...
- Java面向对象 其他对象
Java面向对象 其他对象 知识概要: (1)可变参数 (2)静态导入 (3)System (4)Runtime (5)Date Calendar (6)Math 本 ...
- Java面向对象 集合(中)
Java面向对象 集合(中) 知识概要: (1)泛型的体系概念 (2)泛型的特点 (3)自定义泛型类 泛型的体系概念 泛型:JDK1.5版 ...
- 夯实Java基础系列13:深入理解Java中的泛型
目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...
- 从一知半解到揭晓Java高级语法—泛型
目录 前言 探讨 泛型解决了什么问题? 扩展 引入泛型 什么是泛型? 泛型类 泛型接口 泛型方法 类型擦除 擦除的问题 边界 通配符 上界通配符 下界通配符 通配符和向上转型 泛型约束 实践总结 泛型 ...
- Java面向对象程序设计笔记 • 【目录】
持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java面向对象作业目录(作业笔记) 第1章 Java面向对象笔记 • [第1章 面向对象] 第2章 Java面向对象笔记 • ...
随机推荐
- oracle自定义存储过程:删除表(无论表是否存在)和检测表是否存在
oracle删除表,如果表不存在,就报错,在跑大型脚本(脚本长且耗时的时候)比较麻烦,一般希望的是点开始然后脚本运行到结束,不可能一直盯着屏幕等弹出提示手工点掉,mysql就很好有drop table ...
- SQL常用增删改查语句--来源于网络
1.1[插入单行]insert [into] <表名> (列名) values (列值)例:insert into Strdents (姓名,性别,出生日期) values ('开心朋朋' ...
- Linux常见系统命令和远程管理命令
系统命令 时间与日期: date(查看系统时间) cal (查看本月日历) cal -y (查看一年12个月的日历) 磁盘信息: df -h (查看磁盘剩余空间) #重点放于过载点的/ 目录下 du ...
- 线上可用django和gunicorn的dockerfile内容
一,基础镜像 [xxx.com.cn/3rd_part/python.3.6.8:alpine3.9-mysqlclient1.4.2] FROM python:3.6.8-alpine3.7 MAI ...
- 第十六周博客作业 <西北师范大学| 周安伟>
第十六周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10980707 ...
- pyquery解析库
这一篇整理一下pyquery这个解析库.还是菜,若有错误的地方,欢迎大家随时指正.......(come on.......) pyquery:是一个css选择器,再使用时,也需要传入HTML文本来初 ...
- python安装包及批量更新包
python安装包 # pip安装 pip install pyecharts # 源码安装 - linux git clone https://github.com/pyecharts/pyecha ...
- springboot集成freemarker属性配置(不知道是针对于某个版本,2.0后有变动)
freemarker属性配置 freemarker属性配置: spring.freemarker.allow-request-override=false # 设置是否允许HttpServletReq ...
- CF 938G Shortest Path Queries
又到了喜闻乐见的写博客清醒时间了233,今天做的依然是线段树分治 这题算是经典应用了吧,假的动态图(可离线)问题 首先不难想到对于询问的时间进行线段树分治,这样就可以把每一条边出现的时间区间扔进线段树 ...
- Paper | Noise2Noise: Learning Image Restoration without Clean Data
目录 故事背景 算法原理 点估计 神经网络算法与点估计的关系 核心思想 回头品味 实验 高斯 其他生成噪声 发表在2018 ICML. 摘要 We apply basic statistical re ...