主要介绍:

  • 认识泛型
  • 构造方法中使用泛型
  • 设置多个泛型
  • 通配符
  • 泛型接口
  • 泛型方法
  • 泛型数组

一、认识泛型

具体实例如下:

 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面向对象之泛型的更多相关文章

  1. 3. Java面向对象之泛型-指定多个泛型

    3. Java面向对象之泛型-指定多个泛型 package generic; class MutiGeneric<K, T> { private K key; private T take ...

  2. 2. Java面向对象之泛型-构造方法中使用

    package generic; class Construtgeneric<T> { private T value; public Construtgeneric(T value) { ...

  3. 1. Java面向对象之泛型-认识泛型

    package generic; class Point{ private  Object x; private  Object y; public Object getX() { return x; ...

  4. java面向对象的核心思想

    java面向对象的特征之一:封装 1.封装性的使用 package edu.tongji.classdemo; /* 封装性 1.封装的目的:保护某些属性和方法不被外部所见 2.封装的实现 为属性和方 ...

  5. Java面向对象 其他对象

     Java面向对象  其他对象 知识概要:             (1)可变参数 (2)静态导入 (3)System (4)Runtime (5)Date  Calendar (6)Math 本 ...

  6. Java面向对象 集合(中)

     Java面向对象 集合(中) 知识概要:                   (1)泛型的体系概念 (2)泛型的特点 (3)自定义泛型类 泛型的体系概念           泛型:JDK1.5版 ...

  7. 夯实Java基础系列13:深入理解Java中的泛型

    目录 泛型概述 一个栗子 特性 泛型的使用方式 泛型类 泛型接口 泛型通配符 泛型方法 泛型方法的基本用法 类中的泛型方法 泛型方法与可变参数 静态方法与泛型 泛型方法总结 泛型上下边界 泛型常见面试 ...

  8. 从一知半解到揭晓Java高级语法—泛型

    目录 前言 探讨 泛型解决了什么问题? 扩展 引入泛型 什么是泛型? 泛型类 泛型接口 泛型方法 类型擦除 擦除的问题 边界 通配符 上界通配符 下界通配符 通配符和向上转型 泛型约束 实践总结 泛型 ...

  9. Java面向对象程序设计笔记 • 【目录】

    持续更新中- 我的大学笔记>>> 章节 内容 实践练习 Java面向对象作业目录(作业笔记) 第1章 Java面向对象笔记 • [第1章 面向对象] 第2章 Java面向对象笔记 • ...

随机推荐

  1. 使用百度的webuploader进行附件上传

    相较于之前使用的上传空间的优点:支持html5,不用再安装flash插件,没有大小限制,分片以后上传,上传以后再进行合并. 前端js代码 <script type="text/java ...

  2. 一文解读5G (转)

    今天要研究的对象,是5G接入网. 什么是接入网?相信不少同学,对这个概念一定不会陌生. 搬出这张移动通信架构图: 接入网,在我们无线通信里,一般指无线接入网,也就是通常所说的RAN(Radio Acc ...

  3. 6.GC垃圾回收算法和垃圾收集器的关系

    JAVAGC垃圾回收机制和常见垃圾回收算法 推荐博客:JVM垃圾回收机制和常见垃圾回收算法 JVM的内存结构.垃圾回收算法

  4. python 连接oracle -- sqlalchemy及cx_Oracle的使用详解

    python连接oracle -- sqlalchemy import cx_Oracle as orcl import pandas as pd from sqlalchemy import cre ...

  5. MySQL学习笔记5——编码

    MySQL学习笔记5之编码 编码 1.查看MySQL数据库编码 *SHOW VARIABLES LIK 'char%'; 2.编码解释 *character_set_client:MySQL使用该编码 ...

  6. Python进阶-XV 类和对象的命名空间 组合

    一.类和对象命名空间 1.类中可以定义两种属性 静态属性和动态属性 class Course: language = 'Chinese' # 静态属性 def __init__(self, name, ...

  7. jdbc工具类是多例的

    一直以为他 是单例的, 以为创建个工具类就是为了单例, 节省效率 , 其实 是为了封装代码, 简洁 ! 还有重要一点  :  所欲工具类里面不要抛异常 要捕捉异常  !

  8. oracle存储过程中循环游标,变量的引用

    创建出错时使用: show errors查看具体的错误提示 一. 存储过程中的一个循环及变量引用示例: create or replace procedure my_proiscursor cur i ...

  9. Codeforces Round #553 (Div. 2) C 等差数列求和 + 前缀和

    https://codeforces.com/contest/1151/problem/C 题意 有两个等差数列(1,3,5,..),(2,4,6,...),两个数列轮流取1,2,4,...,\(2^ ...

  10. es6中reduce()方法和reduceRight()方法

    es6中reduce()方法从左往右开始 参数:prev:它是上一次调用回调时返回的结果,每次调用的结果都会给prev cur:当前的元素 index:当前的索引 arr:循环的数组 返回值:函数累计 ...