Java高级——泛型

本文主要讲述泛型的使用

1、在集合中的使用

2、自定义泛型类、泛型接口、泛型方法

3、泛型与继承的关系

4、通配符

由于第一点和第二点在平常的编码工作中已熟练,本文重点讲述后面两点。

直接show the code:

package com.learn;

import java.util.List;

public class ParentGeneric<T> {
    private String name;

    private int id;

    private T t;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public T getT() {
        return t;
    }

    public void setT(T t) {
        this.t = t;
    }

    // 声明泛型方法-单个
    public <E> E getE(E e) {
        return e;
    }

    // 声明泛型方法-多个
    public <E> E[] getArray(E[] arr) {
        return arr;
    }

    // 声明泛型方法-交互
    public <E> void fromArrayToList(E[] arrayE, List<E> listE) {
        for (E e : arrayE) {
            listE.add(e);
        }
    }

    @Override
    public String toString() {
        return "ParentGeneric [name=" + name + ", id=" + id + ", t=" + t + "]";
    }

}

/*
 * 继承泛型类或接口时,可以指名泛型的类型
 *
 * 通常在DAO处理的时候,采用指名泛型类型(泛型就是某个Data Access Object)
 * 如:public class StudentDAO extends AbstractDAO<Student>{内部CRUD方法}
 * 同理:  public class TeacherDAO extends AbstractDAO<Teacher>{内部CRUD方法}
 *
 * 分析源码:学习泛型方法
 * public interface Collection<E> extends Iterable<E> {
 *      <T> T[] toArray(T[] a);
 * }
 *
 */

class SonOneGeneric<T> extends ParentGeneric<T> {

}

class SonTwoGeneric extends ParentGeneric<Integer> {

}

  

原文地址:https://www.cnblogs.com/gzhcsu/p/11703389.html

时间: 2024-11-04 12:41:10

Java高级——泛型的相关文章

java高级-泛型&lt;T&gt;和注解封装与使用

p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px "Yuanti SC"; color: #000000 } span.s1 { text-decoration: underline }  一.java泛型 其实就是约束我们的集合和接口和类 为什么要泛型:规范我数据的操作和类型,它常用语一些接口和父子关系中(继承) 泛型能很好体现java的继承,封装这两个特点 用途:泛型.反射---->做项目,搭框架->模仿和揣测 p

Java高级特性 第1节 集合框架和泛型

Java中,存储多个同类型的数据,可以用数组来实现,但数组有一些缺陷: 数组长度固定不变,布恩那个很好的适应元素数量动态变化的情况 可以通过数组.length获取数组长度,却无法直接获取数组中实际存储的元素个数 数组采用在内存中分配连续空间的方式存储,根据元素信息查找时的效率比较低,需要多次比较 Java提供了一套性能优良.使用方便的接口和类,他们都位于java.util包中. 一.Java中的集合 Java集合类主要由Map接口和Collection接口派生而来,Collection接口有两个

java高级编程的教程

java高级编程说的就是编程思想,在学习完Java基础以后就是编程的,推荐可以去看看<Java编程思想>这本书籍,还不错. Java已经成为了编程语言的骄子.我们可以看到,越来越多的大学在教授数据结构.程序设计和算法分析等课程时,选择以Java语言为载体.这本赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面前也会化解于无形. 这本书赢得了全球程序员的广泛赞誉,即使是最晦涩的概念,在Bruce Eckel的文字亲和力和小而直接的编程示例面

java高级之反射

--- android培训.java培训.期待与您交流! ---- java高级之反射 一 反射(类的加载概述和加载时机) A:类的加载概述 当程序要使用某个类时,如果该类还未被加载到内存中,则系统会通过加载,连接,初始化三步来实现对这个类进行初始化. 加载 就是指将class文件读入内存,并为之创建一个Class对象.任何类被使用时系统都会建立一个Class对象. 连接 验证 是否有正确的内部结构,并和其他类协调一致 准备 负责为类的静态成员分配内存,并设置默认初始化值 解析 将类的二进制数据

千锋《Java高级教程+分布式+springcloud+微信支付》

课程目录:├─千锋Java高级教程-cas单点登录(完结-8集)│      01单点登录介绍│      02cas介绍│      03tomcat搭建https│      04cas server搭建│      05Cas 配置 jdbc 连接数据库│      06Cas 密码 MD5值│      07 Cas 整合shiro1│      07 Cas 整合shiro2│      ├─千锋Java高级教程-dubbo+zookeeper分布式系统架构基础(11集)│      

Java 5 泛型深入研究

Java 5泛型深入研究 上接<Java 泛型的理解与等价实现>,这个仅仅是泛型的入门.有博友反映泛型很复杂,难以掌握.鉴于此,写一片续集. 实际上泛型可以用得很复杂,复杂到编写代码的人员自己也难以看懂.这往往是对泛型的滥用或者类或接口本身设计不合理导致的. 看来用好泛型还真不容易,为此必须从根源说起. 一.逐渐深入泛型 1.没有任何重构的原始代码: 有两个类如下,要构造两个类的对象,并打印出各自的成员x. public class StringFoo { private String x;

Java中泛型的协变

在工作中遇到一个问题,用代码描述如下: package test; import java.util.LinkedList; import java.util.List; public class ListTest {     public void func(List<Base> list) {     }     public static void main(String args[]) {         ListTest lt = new ListTest();         Li

Java 容器 & 泛型:一、认识容器

Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket 容器是Java语言学习中重要的一部分.泥瓦匠我的感觉是刚开始挺难学的,但等你熟悉它,接触多了,也就"顺理成章"地知道了.Java的容器类主要由两个接口派生而出:Collection和Map. 一.Collection vs Collections 首先,Collection 和 Collections 是两个不同的概念.之所以放在一起,是为了更好的比较.Collection是容器层次结构中

Java 泛型 Java使用泛型的意义

Java 泛型 Java使用泛型的意义 @author ixenos 直接意义 在编译时保证类型安全 根本意义 a) 类型安全问题源自可复用性代码的设计,泛型保证了类型安全的复用模板 b) 使用复用性模板时不用手动强制类型转换 三种泛型实现方式的优缺点 C++:模板方式实现,在编译时完全展开并且支持偏特化,类型精度高,代码共享差: Java 5:擦除方式实现,仅用于编译时类型检查,在运行时擦除,向后兼容性好,代码共享好,类型精度非常差: C# 2.0:混合方式实现,在运行时展开特化,类型精度高,