`

Java泛型编程快速入门

阅读更多

JDK1.5 令我们期待很久,可是当他发布的时候却更换版本号为5.0。这说明Java已经有大幅度的变化。本文将讲解JDK5.0支持的新功能-----Java的泛型.

  1、Java泛型

  其实Java的泛型就是创建一个用类型作为参数的类。就象我们写类的方法一样,方法是这样的method(String str1,String str2 ),方法中参数str1、str2的值是可变的。而泛型也是一样的,这样写class Java_Generics<K,V>,这里边的K和V就象方法中的参数str1和str2,也是可变。下面看看例子:

//code list 1
import Java.util.Hashtable;
class TestGen0<K,V>{
 public Hashtable<K,V> h=new Hashtable<K,V>();
 public void put(K k, V v) {
  h.put(k,v);
 }
 public V get(K k) {
  return h.get(k);
 }
 public static void main(String args[]){
  TestGen0<String,String> t=new TestGen0<String,String>();
  t.put("key", "value");
  String s=t.get("key");
  System.out.println(s);
 }
}


  正确输出:value

  这只是个例子(Java中集合框架都泛型化了,这里费了2遍事.),不过看看是不是创建一个用类型作为参数的类,参数是K,V,传入的“值”是String类型。这个类他没有特定的待处理型别,以前我们定义好了一个类,在输入输入参数有所固定,是什么型别的有要求,但是现在编写程序,完全可以不制定参数的类型,具体用的时候来确定,增加了程序的通用性,像是一个模板

  呵呵,类似C++的模板(类似)。

  1.1. 泛型通配符

  下面我们先看看这些程序:

//Code list 2
void TestGen0Medthod1(List l) {
 for (Object o : l)
  System.out.println(o);
}


  看看这个方法有没有异议,这个方法会通过编译的,假如你传入String,就是这样List<String>。

  接着我们调用它,问题就出现了,我们将一个List<String>当作List传给了方法,JVM会给我们一个警告,说这个破坏了类型安全,因为从List中返回的都是Object类型的,而让我们再看看下面的方法。

//Code list 3
void TestGen0Medthod1(List<String> l) {
 for (Object o : l)
  System.out.println(o);
}


  因为这里的List<String>不是List<Object>的子类,不是String与Object的关系,就是说List<String>不隶属于list<Object>,他们不是继承关系,所以是不行的,这里的extends是表示限制的。

  类型通配符是很神奇的,List<?>这个你能为他做什么呢?怎么都是“?”,它似乎不确定,他总不能返回一个?作为类型的数据吧,是啊他是不会返回一个“?”来问程序员的?JVM会做简单的思考的,看看代码吧,更直观些。

//code list 4
List<String> l1 = new ArrayList<String>();
li.add(“String”);
List<?> l2 = l1;
System.out.println(l1.get(0));


  这段代码没问题的,l1.get(0)将返回一个Object。

  1.2. 编写泛型类要注意:

  1) 在定义一个泛型类的时候,在 “<>”之间定义形式类型参数,例如:“class TestGen<K,V>”,其中“K” , “V”不代表值,而是表示类型。

  2) 实例化泛型对象的时候,一定要在类名后面指定类型参数的值(类型),一共要有两次书写。例如:

TestGen<String,String> t=new TestGen<String,String>();

  3) 泛型中<K extends Object>,extends并不代表继承,它是类型范围限制。

分享到:
评论

相关推荐

    实例讲解Java泛型编程的快速入门

    Java 泛型编程是一种强大的工具,它允许我们在编写代码时引入类型参数,从而提高了代码的灵活性和安全性。泛型在Java中主要应用于类、接口和方法,使得程序员可以在编译时检查类型安全,并且可以消除运行时的类型...

    java 泛型入门 实例

    本篇文章将带你入门Java泛型,通过实例深入理解其核心概念。 1. **泛型的基本概念** - 泛型是一种允许在定义类、接口和方法时使用类型参数的机制。这使得代码可以在编译时期检查类型,避免了不必要的类型转换,并...

    Java SE编程入门教程 java序列化(共14页).pptx

    Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门...

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 全套PPT课件资源集合 共18个章节.rar

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 01.Java语言概述(共21页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java...

    Java SE编程入门教程 java泛型(共11页).pptx

    Java SE编程入门教程涵盖了许多核心概念,其中包括Java泛型,它是从Java 1.5版本开始引入的一个重要特性。泛型允许我们在编写代码时指定类型参数,从而在编译时提供类型安全性和代码复用性。 Java中的泛型定义: ...

    Java SE编程入门教程 java instanceof(共3页).pptx

    Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门...

    优质课件 java基础入门必学 Java SE编程入门教程 全套PPT课件 共30个文件 含辅助资料.rar

    Java SE编程入门教程 java泛型(共11页).pptx Java SE编程入门教程 java封装继承多态(共56页).pptx Java SE编程入门教程 java集合(共38页).pptx Java SE编程入门教程 java接口(共21页).pptx Java SE编程入门...

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 07.与运行环境交互(共40页).ppt

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 01.Java语言概述(共21页).ppt 推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 02.理解结构化程序设计_理解面向对象(共25页).ppt 推荐优质Java...

    超值分享java学习资料

    什么叫java的框架 安装好你的机器来使用JSP JSP语法的基本原理 JSP的编译器指引与指令组件JSP的内部对象Java泛型编程快速入门 JDBC连接各种数据库经验技巧集萃 安装JUnit Hibernate 是什么? 字有点小 大家再调吧

    Java SE编程入门教程 properties(共3页).pptx

    java泛型(共11页) java封装继承多态(共56页) java集合(共38页) java接口(共21页) java类和对象方法以及包的使用(共56页) java类和对象方法以及包的使用(共62页) java判断循环(共79页).ppt java入门...

    Java泛型定义与用法入门示例

    Java泛型定义与用法入门示例 Java泛型定义与用法是Java编程语言中非常重要的概念,它可以帮助开发者编写更加安全、灵活和可重用的代码。在本文中,我们将详细介绍Java泛型定义与用法,并通过实例形式分析了Java泛型...

    推荐优质Java课程 疯狂Java语言编程 Java入门到进阶教程 09.泛型(共15页).ppt

    Java泛型在编译期间执行类型检查,但在运行时,泛型信息会被擦除,这意味着所有泛型类最终都会转换为无参数的原始类型。这是为了保持向后兼容性,因为Java的泛型是伪泛型,它使用类型擦除来实现。 6. **泛型与数组...

    Java编程入门学习资料

    Java编程入门学习资料是针对初学者精心准备的一套教程,旨在帮助零基础的学员快速掌握Java编程语言的基础概念和核心语法。在这个过程中,你将了解Java的历史、特点以及其广泛的应用领域,为后续深入学习打下坚实的...

    Java基础入门四泛型反射注解.pdf

    Java基础入门系列是帮助初学者掌握Java编程的重要学习材料,本篇主要介绍了泛型、反射和注解这三大高级特性。 泛型是Java SE 5版本引入的一个新特性,它的主要目的是允许在使用类、接口和方法时能够引用到任何类型...

    java经典编程300例

    Java经典编程300例》内容包括java语言概述、eclipse开发工具、java语言基础、流程控制、数组及其常用操作、面向对象入门、面向对象进阶、字符串与包装类、java集合类框架、常用数学工具类、错误处理、输入/输出、...

Global site tag (gtag.js) - Google Analytics