Java 泛型 (generics) 的使用

泛型是JDK1.5以后增加的,它可以帮助我们建立类型安全的集合。在使用了泛型的集合中,遍历时不必进行强制类型转换。JDK提供了支持泛型的编译器,将运行时的类型检查提前到了编译时执行,提高了代码可读性和安全性。

泛型的本质就是“数据类型的参数化”。 我们可以把“泛型”理解为数据类型的一个占位符(形式参数),即告诉编译器,在调用泛型时必须传入实际类型。

自定义泛型:

我们可以在类的声明处增加泛型列表,如:<T,E,V>。字符可以是任何标识符,一般采用这3个字母。

demo:

package ftf001;

public class generic {
    public static void main(String[] args) {
        MyCollection<String> mc=new MyCollection<>();  //这里的String就是实际传入的数据类型!
        mc.set("房廷飞", 0);

        String a =mc.get(0);  //由于使用了泛型,返回的数据类型直接就是String类型,不再需要强制类型转换
    }

}
//应用泛型,提前做类型检测,使程序更加稳定,可读性强
class MyCollection<E>{  //一般使用T,E,V三个字母
    Object[] objs=new Object[5];
    public void set(E obj,int index) {  //E表示泛型
        objs[index]=obj;
    }
    public E get(int index) {  //E泛型
        return (E)objs[index];    //E泛型
    }
}

泛型E像一个占位符一样表示“未知的某个数据类型”,我们在真正调用的时候传入这个“数据类型”。

2019-04-04    21:35:43    房廷飞

原文地址:https://www.cnblogs.com/fangtingfei/p/10657166.html

时间: 2024-11-09 23:17:42

Java 泛型 (generics) 的使用的相关文章

Java泛型Generics

转载请标明出处: http://blog.csdn.net/wu_wxc/article/details/51493181 泛型 泛型是JDK 5中引入的一个新特性 在尖括号中包含的是形式类型参数,可以在整个类的声明中被使用,当类被使用时,会使用具体的实际类型参数来代替 形式类型参数的命名:尽量使用单个大写字母 普通泛型 一个泛型类型 package cn.wuxiaocheng; class Person<T> { // 标识符可以随便写,T是type的简称 private T name;

Java 泛型(Generics) 综述

一. 引子 一般的类和方法,只能使用具体类型:要么是基本类型,要么是自定义类型.如果要编写可以应用于多种类型的代码,这种刻板的限制对代码的束缚就会很大. 多态算是一种泛化机制,但对代码的约束还是太强(要么继承父类,要么实现接口). 有许多原因促成了泛型的出现,而最引人注目的一个原因,就是为了创造容器类.(泛型的主要目的之一就是用来指定容器要持有什么类型的对象,而且由编译器来保证类型的正确性) 例如,在 Java 实现加入泛型前,ArrayList 只维护一个 Object 类型的数组: publ

java泛型 generics --- 第三部分 泛型、继承、和子类型

Generics, Inheritance, and Subtypes 正如你所知,可以把一种对象类型赋值给另一种类型,只要他们是兼容的.例如,你可以把Integer对象赋值给Object. Object someObject = new Object(); Integer someInteger = new Integer(10); someObject = someInteger; // OK 在面向对象技术中,这被称作"is a"关系.即一个Integer是一中Object,该赋

Java 语法 索引 ----- 泛型(Generics)

class B<T extends A> {} class A {} -------------------------- class C<T extends I> {} interface I {} ----------------------- class D<T extends A & I> {} class E<T extends A & I, U extends A & I> {} 参考文献: Java Quick Synt

2017.4.5 Java 泛型

Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型. 泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数. 假定我们有这样一个需求:写一个排序方法,能够对整形数组.字符串数组甚至其他任何类型的数组进行排序,该如何实现? 答案是可以使用 Java 泛型. 使用 Java 泛型的概念,我们可以写一个泛型方法来对一个对象数组排序.然后,调用该泛型方法来对整型数组.浮点数数组.字符串数组等进行排

1月21日 - (转)Java 泛型

java泛型 什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样. 可以在集合框架(Collection framework)中看到泛型的动机.例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象. 因为 M

java泛型的讲解

java泛型 什么是泛型? 泛型(Generic type 或者 generics)是对 Java 语言的类型系统的一种扩展,以支持创建可以按类型进行参数化的类.可以把类型参数看作是使用参数化类型时指定的类型的一个占位符,就像方法的形式参数是运行时传递的值的占位符一样. 可以在集合框架(Collection framework)中看到泛型的动机.例如,Map 类允许您向一个 Map 添加任意类的对象,即使最常见的情况是在给定映射(map)中保存某个特定类型(比如 String)的对象. 因为 M

Java 泛型 Java使用泛型的意义

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

java泛型小问题

几年前当Java5还未正式发布的时候,看到过一些人写的介绍Tiger中的新特性,当时对我第一感觉冲击最大的就是泛型(generics)和注释(annotation),因为它们直接影响了我们编码的语法习惯. 在后来的使用过程中,对于泛型一直没有特别深入的使用过,没有遇到那样的需求和场景.只需要了解Java中的泛型是编译期的,运行期被“擦拭”掉了:然后还有几种通配符的表示就足够了. 直到一天我在查看Java5中Enum的源代码时,发现它是这么定义的: Java代码 public abstract c