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面向对象笔记 • ...
随机推荐
- Python—时间模块(time)和随机模块(random)
时间模块 time模块 获取秒级时间戳.毫秒级时间戳.微秒级时间戳 import time t = time.time() print t # 原始时间数据 1574502460.90 print i ...
- Debian创建.desktop文件(Create .desktop file in Debian/Gnome)
在Debian系Linux中,用于标识应用的启动文件.desktop file是位于/usr/share/applications目录下的,Gnome会将这些文件在菜单中展示为启动图标,也可以固定在d ...
- 微信小程序云开发-从0打造云音乐全栈小程序
第1章 首门小程序“云开发”课程,你值得学习本章主要介绍什么是小程序云开发以及学习云开发的重要性,并介绍项目的整体架构,真机演示项目功能,详细介绍整体课程安排.课程适用人群以及需要掌握的前置知识.通过 ...
- BDFramework.Core 学习
x哥(懂的都懂)的框架, 拿点代码过来做注释. 想了解详情可以去他的github https://github.com/yimengfan/BDFramework.Core # Object file ...
- java虚拟机规范学习笔记之数据类型
1.1 class文件格式 编译后被Java虚拟机所执行的代码使用了一种平台中立的二进制格式来表示,并且经常以文件的形式来存储,这种格式称为class文件格式.class文件格式中精确的定义了类与接口 ...
- QSS QPushButton:hover :pressed ...为状态下变更字体颜色(color)无效,变成字体粗细(font-weight)有效???
//字体颜色变更无效 QPushButton:hover{ font-weight:bold; color:rgba(, , , ); } //字体颜色变更有效 QPushButton#pushBut ...
- js json字符串与json对象互相转换(最全)
1.json字符串转json对象 使用场景:通常在取json字符串里具体的值时,会用到. var jsonString = '{"name":"Marydon&quo ...
- [NewLife.XCode]百亿级性能
NewLife.XCode是一个有10多年历史的开源数据中间件,支持nfx/netcore,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和 ...
- 二分图学习记 之 KM算法 二分图最大权完美匹配。
前置知识 :匈牙利算法 首先有这样一张图,求这张图的最大权完美匹配. 当然如果你不想看这些渣图的话,您可以转到 洛谷 运动员最佳匹配问题 下面我来强行解释一下KM算法 左边一群妹子找汉子,但是每个妹子 ...
- jboss_log4j.xml配置
log4j是个优秀的开源的java日志系统,jboss内部也集成他,在jboss下默认的只是对server做了每日日志,并没有对你部署的项目进行每日的日志构建,但我们能通过修改jboss-log4j. ...