`

CoreJava第12章 泛型

阅读更多
1.类型参数:更好可读性,安全性
a)<T,U extends Comparable&Serializable> 确保实现某接口 可以是类,接口(extends接近子类概念)
b)类放第一,只能一个,接口可多个

2.通配符类型(可限制只能单向调用)

3.
public class Pair<T> {

	private T a;

	public Pair(T a) {
		this.a = a;
	}

	public T getA() {
		return a;
	}

	public void setA(T a) {
		this.a = a;
	}

	public static void main(String[] args) {
		Pair<String> a = new Pair<String>("testttt");
		System.out.println(a.getA());
	}

}


4.T U,S表示任意类型,<K,V>表身key,value,<E>集合元素

5.泛型方法
public static <T> T test(T[] in){
  return in[in.length/2];
}
//调用 ClassA.test(..)  ClassA.<String>Test(...);


5.虚拟机没有泛型,都为普通类
a)定义泛型,提供原始类型(raw type)
b)擦除类型变量,替换限定类型(无用Object,有的话用第一个类型)

6.翻译泛型表达式
a)原始方法调用
b)强制转换,安全转换
c)引入桥方法,多态实现


7.参数名相同,返回值不同是不允许的,虚拟机却可识别
j2se5.0 方法覆盖可返回更严格的返回类型

8.限制
a)不能用基本类型做类型参数(擦除至少要含有Object)
b)运行时类型检测只适用于原始类型
if(a instanceOf Pair<T>) //or Pair<String>
Pair<String> a=Pair<T>b;
a.getClass-->Pair.class
c)不能抛出,不能捕获泛型实例(Throwable),不能在catch(T e)
public class Problem<T> extends Throwable //illegal
public class Problem<T extends Throwable> //legal  异常类型

d)参数化类型数组非法 Pair<String>[] .. 数组能记忆类型(component type)
推荐ArrayList<Pair<String>>
e)不能实例化类型变量 a=new T();
T.class 非法 要是Class<T> c 声明

f)数组做私有域
public class ArrayList<E>{
  private Object[] elements;//E[]
  public E get(int n){
    return (E)elements[n];//cast
  }
  public void set(int n,E e){
    elements[n]=e;//elements[n]=(E[])new Object[10];
  }

}
//object->string会出问题
T[] mm=(T[])Array.newInstance(a.getClass.getComponentType,2);//实例

g)禁止带类型变量静态域/方法 (类型擦除)

h)注意擦除后冲突 boolean equals(T value)
若继承2个接口的祖先不能同一接口,可能桥接冲突

g)类型变量无继承关系 Pair<T> Pair<S> 可包含于Pair
数组可以继承关系,可赋值(多态)

h)可继承

9.通配符的类型参数 <? extends Employee>















分享到:
评论

相关推荐

    Core Java.JAVA核心技术(中文版)

    《Core Java.JAVA核心技术(中文版)》是学习Java编程的重要参考资料,主要涵盖了Java语言的基础以及进阶知识。这本书深入浅出地讲解了Java的核心概念和技术,为读者提供了全面而细致的学习路径。以下是对该书内容的...

    core java 第九版 英文

    《Core Java 第九版》是Java编程领域的一本经典教材,尤其适合初学者入门。这本书深入浅出地讲解了Java语言的基础知识和高级特性,帮助读者掌握Java编程的核心概念和技术。 1. **Java语言基础**:书中首先介绍了...

    corejava.zip

    适用于使用Java核心卷一的同学。官方下载工具。 ...第12章详细讨论Swing GUI工具包;第13章介绍如何将程序部署为应用或applet;第14章讨论并发。本书后还有一个附录,其中列出了Java语言的保留字。

    Core Java( Java 核心) PDF 教材

    《Core Java》是由Sun Microsystems公司出版的一本权威的Java编程教材,它全面深入地介绍了Java语言的核心概念和技术。这本书是Java开发者的重要参考资料,对于初学者和有经验的开发者都具有很高的学习价值。以下是...

    core java 第十版

    《核心Java 第十版》是Java编程领域的一本经典教材,由Cay S. Horstmann和Gary Cornell合著,全面介绍了Java编程的基础知识和技术。这本书主要分为两卷,卷I主要关注基础知识,包括Java语言的核心特性、面向对象编程...

    core java 1第十版英文版 java核心技术第十版英文版

    《Core Java 1 第十版》是Java编程领域的一本经典教材,专注于Java核心技术的讲解。这本书详尽地涵盖了Java语言的基础以及高级特性,对于学习和掌握Java编程有着极高的价值。以下是根据书名和描述提炼出的一些核心...

    Core Java. 8th java核心技术第八版英文

    《Core Java 8th Edition》是Java开发领域的一部经典著作,主要针对的是Java 8这一版本。这本书详细阐述了Java编程语言的核心概念和技术,对于任何想要深入理解Java的开发者来说,都是一份不可多得的参考资料。以下...

    core java 卷1 pdf

    《Core Java卷1》是Java编程初学者的重要参考资料,它由Cay S. Horstmann和Gary Cornell合著,被誉为Java编程的经典教材。第八版在原有的基础上进行了更新,以适应现代Java开发环境的变化,提供了全面且深入的Java...

    corejava.rar

    《核心Java》是Java编程领域的经典著作,第十版的发布为学习者提供了全面且深入的Java知识体系。这个"corejava.rar"压缩包文件包含了该书籍的源代码,供读者在学习过程中实践和理解书中所讲解的概念。以下是基于Java...

    Core Java. Volume I. Fundamentals, 8th Edition JAVA核心技术1基础知识

    更新到jdk 6平台,但和 第七版没有本质的区别 代码示例请到此地址下载:【corejava8代码示例】http://download.csdn.net/source/2366281 1 AN INTRODUCTION TO JAVA...第12章 泛型程序设计 第13章 集合 第14章 多线程

    core Java 11 Edition Java核心技术 卷一卷二

    《核心Java 11版:Java核心技术 卷一卷二》是Java开发人员的重要参考资料,涵盖了从基础到高级的广泛主题。这套书籍深入讲解了Java 11版本的关键概念和技术,旨在帮助读者全面掌握Java编程。 卷一主要关注基础知识...

    [java.核心技术.第八版].Core.Java..8th.Edition源代码 示例代码

    第1章 Java 程序设计概述 1.1 Java 程序设计平台 1.2 Java 白皮书的关键术语 1.2.1 简单性 1.2.2 面向对象 1.2.3 网络技能 1.2.4 健壮性 1.2.5 安全性 ...第12章 泛型程序设计 第13章 集合 第14章 多线程

    Core Java. 8thEdition + source code

    《Core Java 8th Edition》是Java编程领域中一本经典的参考书籍,由Cay S. Horstmann和Gary Cornell合著。这本书详细介绍了Java SE(标准版)平台的核心概念和技术,特别关注Java 8的新特性。以下是根据标题、描述...

    Core JAVA volume I(第九版)

    《Core JAVA volume I(第九版)》是一本深入讲解Java编程基础的经典著作,适用于初学者和有经验的程序员。此书以英文版呈现,内容清晰明了,是学习Java技术的宝贵资源。作为一本权威的Java教程,它覆盖了Java语言的...

    Core Java Volume II--Advanced Features(10th) Java核心技术第10版 第二卷 英文版

    这本书的第十版包含了Java语言的最新发展,为开发者提供了深入理解和应用Java技术的全面指南。本卷是第二部分,主要关注Java的高级特性,包括并发、网络、图形用户界面(GUI)、XML处理、数据库访问、反射、注解、...

    Core Java 8th Vol I

    12. **第12章:网络编程** - Socket编程模型 - HTTP协议及其实现方式 13. **第13章:数据库访问** - JDBC API介绍 - 数据库连接池管理 #### 三、重点知识点解析 - **面向对象编程(OOP)原理** 本书对OOP...

    Core Java Vol I 8th

    《Core Java Vol I 8th》是Java编程领域的一本经典教材,主要针对初学者和有一定基础的开发者,深入浅出地介绍了Java编程的核心概念和技术。这本书由Cay S. Horstmann和Gary Cornell合著,是Java学习者的重要参考...

    core java volume I 8th

    《核心Java第一卷 第8版》是Java编程学习的经典教材,专为初学者和有一定经验的程序员设计。这本书深入浅出地介绍了Java编程语言的基础知识,涵盖了从基本语法到面向对象编程的重要概念。以下是该书可能涉及的一些...

Global site tag (gtag.js) - Google Analytics