>泛型:泛型指代了參数的类型化类型,一般被用在接口。类。方法中

>作用:用来确定參数的范围,在书写代码的时候提前检查代码的错误性

>泛型的声明,下面给出类声明,依此类推:

class ClassName<T>{}

class ClassName<K,V,O>{}





>通用符:<?>一般指定全部的类

>限定符:<T exteds 超类>

1)限定符字母仅仅能被限定一次

2)当extends的时候仅仅能使用大写字母,当super的时候仅仅能使用"?"

3)在类中不能使用super限定符号。

4)在类中的限定符能被方法继续使用。

5)接口中声明时有限定符号,其子类也必须有。

class Book<T extends Number>{

void go(Stack<T> stack){

}

public void go2(Stack<?

super Number> stack2){



}

}





1.參数转换>

声明:

class Book<T extends Number>{}

引用:

Book<Number> numBook=new Book<Number>();

Book<Integer> numBook2=new Book<Integer>();

// 同一层级上的參数显式或者隐式的转换都是错误的

// numBook=(Book<Number>)numBook2;

2.比較和赋值:

声明:

class CompareClass<T>{

T a;

CompareClass(T t){

this.a=t;


}

}

比較:

CompareClass<Float> f=new CompareClass<Float>();

CompareClass<Integer> i=new CompareClass<Integer>();

f==i?这样的结果会产生编译错误;

赋值:

f=i;?相同也会产生编译错误。





2.类型參数数组>

声明:

T[] t;

定义:

T[] t=new int[10];//编译错误

改动:

T[] t;

int[] in=new int[]{10,20};

t=in;





3.类型參数静态使用>因为类型參数仅仅有在实例化的时候才确定类型,因此

例如以下的代码。把类型參数作为静态变量将会引发编译错误;

class Person<K,V>{



static K name;

static V age;

static V getName(){

return age;

}

}

JAVA进阶-泛型的更多相关文章

  1. Java进阶 | 泛型机制与反射原理

    一.泛型的概念 1.基础案例 泛型在Java中的应用非常广泛,最常见则是在集合容器中,先看下基础用法: public class Generic01 { public static void main ...

  2. Java进阶代码

    本文重在温习……不过初学以及进阶高手不可错过 1.  public static void arraycopy(全小写)(object src,int srcPos,object dest,int d ...

  3. Java进阶(三十五)java int与integer的区别

    Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...

  4. Java进阶之路

    Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...

  5. Java进阶4表达式中的陷阱

    Java进阶4表达式中的陷阱 20131103 表达式是Java中最基本的组成单元,各种表达式是Java程序员最司空见惯的内容,Java中的表达式并不是十分的复杂,但是也有一些陷阱.例如当程序中使用算 ...

  6. (转)Java进阶java int与Integer的区别

    Java进阶java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象,用一个引 ...

  7. Java 进阶 hello world! - 中级程序员之路

    Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...

  8. Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式

    原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...

  9. Java线程间通信方式剖析——Java进阶(四)

    原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...

随机推荐

  1. BZOJ 2084 二分+hash OR Manacher

    思路: 二分+哈希 //By SiriusRen #include <cstdio> #include <cstring> #include <algorithm> ...

  2. php统计网站 / html页面 浏览访问次数程序

    本文章来给大这介绍了php自己写的一些常用的网站统计代码写法,用无数据库的与使用数据库及html静态页面浏览资次数统计代码,大家可进入参考. 实例1 直接使用txt文件进行统计的代码 <?php ...

  3. Spark Streaming基础概念

    为了更好地理解Spark Streaming 子框架的处理机制,必须得要自己弄清楚这些最基本概念. 1.离散流(Discretized Stream,DStream):这是Spark Streamin ...

  4. Asp.net三种事务处理

    事务处理是在数据处理时经常遇到的问题,经常用到的方法有以下三种总结整理如下:方法1:直接写入到sql 中在存储过程中使用 BEGIN TRANS, COMMIT TRANS, ROLLBACK TRA ...

  5. WPF TextBox 仅允许输入数字

    因为在 IValueConverter 实现中,当文本不能转换为目标类型时返回 DependencyProperty.UnsetValue ,Validation.GetHasError 返回 tru ...

  6. 前端-git思维导图笔记

    命令汇总 git config配置本地仓库 常用git config --global user.name.git config --global user.email git config --li ...

  7. Android 在线升级

    1.获取当前安装版本 //获取当前版本 public int getVersion(Context context){ ; try { version = context.getPackageMana ...

  8. js 图片轮播代码编辑

    图片轮播,将几张图片统一放在展示平台 banner上,通过banner移动将图片轮流播放. <script>// 取对象 var btn_l = document.getElementsB ...

  9. Percona Xtrabackup对数据库进行部分备份

    Xtrabackup也可以实现部分备份,即只备份某个或某些指定的数据库或某数据库中的某个或某些表.但要使用此功能,必须启用innodb_file_per_table选项,即每张表保存为一个独立的文件. ...

  10. Lazarus开发环境编译选项配置

    Lazarus的环境配置让人有点犯晕,对于刚从delphi转到lazarus上的我来说,每次新建工程都会遇到一堆Can't find unit xxxx used by xxxx的问题,问题虽然不大, ...