博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
泛型(Generic)
阅读量:6496 次
发布时间:2019-06-24

本文共 1458 字,大约阅读时间需要 4 分钟。

hot3.png

泛型是为了在限制在集合中的数据类型。将运行时的可能发生的异常转化为编译时的异常。

例子,利用Map的泛型

@Test    public void test1(){        Map
map = new HashMap
(); map.put("key1","value1"); map.put("key2","value2"); map.put("key3","value3"); Set
> entries = map.entrySet(); for (Map.Entry
set: entries){ String key = set.getKey(); String value = set.getValue(); print(key+" : "+ value); } }

泛型的声明正确性

泛型声明必须是引用类型,不能是基本的数据类型。

正常的声明方法:如果两边都是用到了泛型,两边都必须一样。

List
persons = new ArrayList
();

错误的声明

List
persons = new ArrayList
();List persons = new ArrayList
();
由于要兼容历史上没有泛型所以允许两边其中有一边没有泛型

List
persons = new ArrayList();List persons = new ArrayList
();
原因是当传入一个不带泛型和带泛型方法的时候,这两种情况都必须兼容
public void test3(List
name){}public void test4(List name){}

泛型擦除,泛型只是检查编译时候的问题,而在进入java虚拟机的时候会编译完成class中没有了泛型。执行效率不会被影响。

List<E>中的E为类型参数变量

List<String>中的String为实际参数变量

整个称为List<E>泛型类型。

整个称为List<String>参数化类型

泛型定义

需要先声明再定义

static得在声明之前<T>,这种声明方法只在方法内有效。

public class Generic {    public 
T test(T t){ return t; }}
//这种方法可以在类上面生声明好全局需要用的属性public class Generic {    public static 
T test(T t){        return t;    }    public void test2(S s,Y y,F f){    }}

转载于:https://my.oschina.net/u/167671/blog/171895

你可能感兴趣的文章
swapper进程【转】
查看>>
跨链技术与通证经济
查看>>
爬虫学习之-xpath
查看>>
js jQuery 右键菜单 清屏
查看>>
深入理解let和var的区别(暂时性死区)!!!
查看>>
dotConnect for Oracle
查看>>
Eclipse下C/C++开发环境搭建
查看>>
Eclipse中设置在创建新类时自动生成注释
查看>>
我的友情链接
查看>>
CoreOS 手动更新
查看>>
golang 分页
查看>>
再论机械式针对接口编程
查看>>
25 个 Linux 性能监控工具
查看>>
C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
查看>>
Tengine-2.1.1 ngx_http_concat_module 400问题
查看>>
Windows中挂载安装ISO文件
查看>>
Wayland 1.0发布
查看>>
golang的goroutine是如何实现的?
查看>>
乐视云基于Kubernetes的PaaS平台建设
查看>>
R 学习笔记《十》 R语言初学者指南--图形工具
查看>>