文档章节

Java泛型的理解和用法

YH_猿员猿
 YH_猿员猿
发布于 2016/07/21 17:32
字数 559
阅读 12
收藏 0

泛型的由来:

    在java开发中,泛型和集合框架结合起来创建对象会比较的常用。泛型是指参数化类型的能力,它可以定义类,方法,接口等。随后在编译的过程中,由编译器自动的转换成具体的类型替换它。
    之所以使用泛型是因为早期的泛型是Object来使用得,但是在实际的使用时,在类型的转换上存在隐患。比如我们定义了一个Object,实例的时候将它转换成String,但是在接收的时候我们又接受为int型,这样在程序的代码片中是不会报错的,但是在执行的过程中就会报错。所以java提供泛型来解决安全问题。

泛型的使用:
1.定义泛型类

public class Toll<E>{

    }

2.定义泛型类中泛型方法

public class Toll<E>{

        private E e;

        public E getE(){
            return e;
        }

        public void setE(E e){
            this.e = e;
        }
    }

这里的泛型类中的泛型必须和类定义的泛型保持一致,如果不一致则需要在方法中定义自己泛型

        public<T> void show(T t){
            System.out.println(t);
        }

3.泛型接口的使用

    interface Inter<T>{
        public void show(T t);
    }

4.泛型通配符?

  1. 非受限统配类型 ?表示任何一种对象类型 ,等价于? extends Object。
  2. 受限通配类型 ? extends T ,表示T或T的一个未知子类型。
  3. 下限通配 ?super T,表示T或T的一个父类型。

利用泛型自定义栈

/** 1. 2. @author hp 3. 创建一个空栈 4. @param <E> */
public class GenericStack<E> {
    private ArrayList<E> list = new ArrayList<>();
    public GenericStack() {
    }
    /* * 栈的元素个数 */
    public int getSize(){
        return list.size();
    }
    /* * 返回栈顶元素 */
    public E peek(){
        return list.get(getSize()-1);
    }
    /* * 向栈的顶端添加一个元素 */
    public void push(E o){
        list.add(o);
    }
    /* * 弹出栈顶元素并删除这个元素 */
    public E pop(){
        E o = list.get(getSize()-1);
        list.remove(getSize()-1);
        return o;
    }
    public boolean isEmpty(){
        return list.isEmpty();
    }
}

注:!!!

  1. 泛型不能使用new E(),不能使用泛型类型参数创建对象。
  2. 不能使用new E[],不能使用泛型创建数组
  3. 在静态方法中不允许类的参数是泛型类型
  4. 异常类不能是泛型

本文转载自:http://blog.csdn.net/yin569258/article/details/50886910

共有 人打赏支持
YH_猿员猿
粉丝 0
博文 12
码字总数 0
作品 0
徐汇
程序员
Java 泛型详解-绝对是对泛型方法讲解最详细的,没有之一

对java的泛型特性的了解仅限于表面的浅浅一层,直到在学习设计模式时发现有不了解的用法,才想起详细的记录一下。 本文参考java 泛型详解、Java中的泛型方法、 java泛型详解 1 概述 泛型在j...

hensemlee
09/23
0
0
Java编程语言高级特性入门学习——泛型、反射和注解!

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于PC、数据中心、游戏控制台、科学超级计算机、移动电话和互...

Java小辰
06/02
0
0
Kotlin语言中的泛型设计哲学

Kotlin语言的泛型设计很有意思,但并不容易看懂。关于这个部分的官方文档,我反复看了好几次,终于弄明白Kotlin语言泛型设计的背后哲学。这篇文章将讲述Kotlin泛型设计的整个思考过程及其背后...

欧阳锋
04/16
0
0
Java 8新特性探究(六)泛型的目标类型推断

简单理解泛型 泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。通俗点将就是“类型的变量”。这种类型变量可以用在类、接口和方法的创建中。...

OSC闲人
2013/12/14
0
3
Kotlin 泛型 VS Java 泛型

建议先阅读我的上一篇文章 -- Java 泛型 和 Java 泛型一样,Kotlin 泛型也是 Kotlin 语言中较难理解的一个部分。Kotlin 泛型的本质也是参数化类型,并且提供了编译时强类型检查,实际上也是伪...

JohnnyShieh
06/11
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初级开发-编程题

` public static void main(String[] args) { System.out.println(changeStrToUpperCase("user_name_abc")); System.out.println(changeStrToLowerCase(changeStrToUpperCase("user_name_abc......

小池仔
今天
6
0
现场看路演了!

HiBlock
昨天
19
0
Rabbit MQ基本概念介绍

RabbitMQ介绍 • RabbitMQ是一个消息中间件,是一个很好用的消息队列框架。 • ConnectionFactory、Connection、Channel都是RabbitMQ对外提供的API中最基本的对象。Connection是RabbitMQ的s...

寰宇01
昨天
12
0
官方精简版Windows10:微软自己都看不过去了

微软宣布,该公司正在寻求解决方案,以减轻企业客户的Windows 10规模。该公司声称,企业客户下载整个Windows 10文件以更新设备既费钱又费时。 微软宣布,该公司正在寻求解决方案,以减轻企业...

linux-tao
昨天
20
0
TypeScript基础入门之JSX(二)

转发 TypeScript基础入门之JSX(二) 属性类型检查 键入检查属性的第一步是确定元素属性类型。 内在元素和基于价值的元素之间略有不同。 对于内部元素,它是JSX.IntrinsicElements上的属性类型...

durban
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部