Java的泛型是什么呢, 就是类型的參数化,这得类型包含方法參数和返回值。也就是原本该是确定类型的地方换成了变量,把类型的确定时间向后延迟了。

在之前,学过“重载”的概念,重载是什么呢,举例来说

public class Test{
// 处理整型数据
void receive(int i) {
System.out.println("Received one int data");
System.out.println("i="+i);
}
// 处理浮点型数据
void receive(float f) {
System.out.println("Received one float data");
System.out.println("f="+f);
}
// 处理字符串数据
void receive(String s) {
System.out.println("Received a String");
System.out.println("s="+s);
} }

在上面的这个类里的三个方法中有同样的处理逻辑,仅仅有參数类型不同。方法调用时程序会依据參数的类型调用对应參数的方法,这就是參数重载,让类以统一的方式处理不同数据类型的手段。

那泛型和重载有什么联系呢?

泛型和重载从不同的角度处理了多种数据类型的问题。

泛型能够应用的更广泛,能够用于方法、接口、类。那么让我们看看怎样用泛型实现上面的Test类呢?

public class Test<T> {
void receive(T t) {
System.out.println("Received one "+t.getClass().getName()+" data");
System.out.println("t="+t);
} public static void main(String[] args){
Test<String> test=new Test<String>();
test.receive("abc"); Test<Integer> test1=new Test<Integer>();
test1.receive(1);
}
}

我们发如今泛型的应用中,我们用变量T取代了详细的类型參数。能够等到实际调用的时候在确定參数的类型,这样大大降低了代码的量,而且T能够是java中的不论什么类型(包含基本类型和对象类型)。事实上这里并没有什么新知识。仅仅是在函数的基础上。把传入数据和输出数据(返回值)的类型也參数化了。以下是一个方法的返回值也是用泛型的样例:

public class TestGenetic<K,V> {
public Hashtable<K,V> table=new Hashtable<K,V>(); public void put(K k,V v){
table.put(k, v);
} public V get(K k){
return table.get(k);
} public static void main(String[] arg){
TestGenetic<String,String> test=new TestGenetic<String,String>();
test.put("001", "abc");
test.put("002", "def");
String str=test.get("001");
System.out.print(str);
} }

当中get方法的返回值也使用了泛型,因此应用就更加的灵活了。当然,以上代码中用到的T。K。V都仅仅相当于变量名。用什么字母取代都能够。

Java基础:泛型的更多相关文章

  1. 一天一个Java基础——泛型

    这学期的新课——设计模式,由我仰慕已久的老师传授,可惜思维过快,第一节就被老师挑中上去敲代码,自此在心里烙下了阴影,都是Java基础欠下的债 这学期的新课——算法设计与分析,虽老师不爱与同学互动式的讲 ...

  2. Java 基础 -- 泛型、集合、IO、反射

    package com.java.map.test; import java.util.ArrayList; import java.util.Collection; import java.util ...

  3. java基础-泛型举例详解

    泛型 泛型是JDK5.0增加的新特性,泛型的本质是参数化类型,即所操作的数据类型被指定为一个参数.这种类型参数可以在类.接口.和方法的创建中,分别被称为泛型类.泛型接口.泛型方法. 一.认识泛型 在没 ...

  4. Java基础 - 泛型详解

    2022-03-24 09:55:06 @GhostFace 泛型 什么是泛型? 来自博客 Java泛型这个特性是从JDK 1.5才开始加入的,因此为了兼容之前的版本,Java泛型的实现采取了&quo ...

  5. java基础-泛型3

    浏览以下内容前,请点击并阅读 声明 8 类型擦除 为实现泛型,java编译器进行如下操作进行类型擦除: 如果类型参数有限制则替换为限制的类型,如果没有则替换为Object类,变成普通的类,接口和方法. ...

  6. java基础 泛型

    泛型的存在,是为了使用不确定的类型. 为什么有泛型? 1. 为了提高安全 2. 提高代码的重用率 (自动 装箱,拆箱功能) 一切好处看代码: package test1; import java.la ...

  7. java基础-泛型2

    浏览以下内容前,请点击并阅读 声明 6 类型推测 java编译器能够检查所有的方法调用和对应的声明来决定类型的实参,即类型推测,类型的推测算法推测满足所有参数的最具体类型,如下例所示: //泛型方法的 ...

  8. java基础-泛型1

    浏览以下内容前,请点击并阅读 声明 泛型的使用能使类型名称作为类或者接口定义中的参数,就像一般的参数一样,使得定义的类型通用性更强. 泛型的优势: 编译具有严格的类型检查 java编译器对于泛型代码的 ...

  9. Java基础---泛型、集合框架工具类:collections和Arrays

    第一讲     泛型(Generic) 一.概述 1.JDK1.5版本以后出现的新特性.用于解决安全问题,是一个类型安全机制. 2.JDK1.5的集合类希望在定义集合时,明确表明你要向集合中装入那种类 ...

  10. Java基础——泛型

    一.定义 泛型(generic)是指参数化类型的能力.可以定义带泛型类型的类或方法,随后编译器会用具体的类型来替换它(泛型实例化).使用泛型的主要优点是能够在编译时,而不是在运行时检测出错误.它是jd ...

随机推荐

  1. 探索PHP+Nginx(一) 安装Linux操作系统

    每次学习一种新的开发语言的时候,都要经历一个很纠结的过程,除非你运气很好或者准备工作充分,否则你在这个过程中总会耗费大量的时间和精力,当然你也会受益很多.而这个过程就是,开发环境的基础搭建,看似是装几 ...

  2. PSPInstance Object | Web Python

    PSPInstance Object | Web Python The PSPInstance object is available to all PSP pages through the psp ...

  3. 【转】android 电池(二):android关机充电流程、充电画面显示

    关键词:android 电池关机充电 androidboot.mode charger关机充电 充电画面显示 平台信息:内核:linux2.6/linux3.0系统:android/android4. ...

  4. vector的内存分配与释放

    1. vector内存分配 <Effective STL>中"条款14":使用reserve来避免不必要的重新分配 关于STL容器,最神奇的事情之一是只要不超过它们的最 ...

  5. C程序设计语言(K&R)笔记

    1.表达式中float类型的操作数不会自动转换为double类型.一般来说,数学函数(如math.h)使用双精度类型的变量.使用float类型主要是为了在使用较大数组时节省存储空间,有时也为了节省机器 ...

  6. [KMP][HDU3336][Count the string]

    题意 计算所有S的前缀在S中出现了几次 思路 跟前缀有关的题目可以多多考虑KMP的NEXT数组 #include <cstdio> #include <cstring> #in ...

  7. Android显示系统设计框架介绍

    1. Linux内核提供了统一的framebuffer显示驱动,设备节点/dev/graphics/fb*或者/dev/fb*,以fb0表示第一个显示屏,当前实现中只用到了一个显示屏. 2. Andr ...

  8. 配置基于NotePad++工具下的C#开发环境

    1.打开NotePad++,打开Notepad++的插件(plugins)菜单-->Plugin Manager-->Show Plugin Manager-->勾选NppExec- ...

  9. 正式软件工作第一天————MVC、ext JS、和clsa

    正式上班第一天,引导人就提出了MVC.extjs和clsa 三种框架,在这之前只听说了MVC,但还木有学习过,顺便把学习过程记录下来. MVC——初学习 1.M——model 模型:应用对象,处理业务 ...

  10. spring入门:beans.xml不提示、别名、创建对象的三种方式

    spring的版本是2.5 一.beans.xml文件不提示 Location:spring-framework-2.5.6.SEC01\dist\resources\spring-beans-2.5 ...