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

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

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

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. Linux-防火墙设置-centos6.10版

    cd /etc/sysconfig vi iptables 输入i进入编辑模式 打开下图,并按照下图修改 输入esc退出编辑模式 输入保存命令:[:w] 输入退出命令:[:q] 重启防火墙 servi ...

  2. B - Taxi(贪心)

    Problem description After the lessons n groups of schoolchildren went outside and decided to visit P ...

  3. 通过Web Service实现IP地址查询功能

    实例01 实现一个简单的Web服务访问 本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省.市.地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件 ...

  4. Deutsch lernen (12)

    1. hinweisen - wies hin - hingewiesen 向...指出,指明 auf etw.(A) hinweisen Ich möchte (Sie) darauf hiweis ...

  5. centos开机运行级别更改

    1.使用命令切换运行级别/目标 # systemctl isolate multi-user.target //切换到运行级别3,该命令对下次启动无影响,等价于telinit 3 # systemct ...

  6. java Web(3)

    Servlet 是运行在Web服务器或应用服务器上的Java程序 在Web上创建动态内容的有效而强大的解决方案 由容器来管理生命周期与Web服务器交互 由Sun规范了其功能 Servlet部署: 一个 ...

  7. OpenCV: 图像连通域检测的递归算法

    序言:清除链接边缘,可以使用数组进行递归运算; 连通域检测的递归算法是定义级别的检测算法,且是无优化和无语义失误的. 同样可用于寻找连通域 void ClearEdge(CvMat* MM,CvPoi ...

  8. 说说web缓存-强缓存、协商缓存

    网上关于WEB缓存的文章很多,今天汇总一下. 为什么要用缓存 一般针对静态资源如CSS,JS,图片等使用缓存,原因如下: 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影 ...

  9. C++调用Matlab函数求特征值

    最近需要用到C++和Matlab的混编,记录一下学习过程~ 要实现的是调用Matlab函数,求矩阵前k个最小的特征值及其特征向量. //C++ #include "engine.h" ...

  10. Spring Cloud Alibaba、Spring Boot、Spring Cloud对应版本关系

    Spring Boot Spring Cloud Spring Cloud Alibaba 2.1.x Greenwich 0.9.x 2.0.x Finchley 0.2.x 1.5.x Edgwa ...