JAVA进阶-泛型
>泛型:泛型指代了參数的类型化类型,一般被用在接口。类。方法中
>作用:用来确定參数的范围,在书写代码的时候提前检查代码的错误性
>泛型的声明,下面给出类声明,依此类推:
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进阶-泛型的更多相关文章
- Java进阶 | 泛型机制与反射原理
一.泛型的概念 1.基础案例 泛型在Java中的应用非常广泛,最常见则是在集合容器中,先看下基础用法: public class Generic01 { public static void main ...
- Java进阶代码
本文重在温习……不过初学以及进阶高手不可错过 1. public static void arraycopy(全小写)(object src,int srcPos,object dest,int d ...
- Java进阶(三十五)java int与integer的区别
Java进阶(三十五)java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象 ...
- Java进阶之路
Java进阶之路——从初级程序员到架构师,从小工到专家. 怎样学习才能从一名Java初级程序员成长为一名合格的架构师,或者说一名合格的架构师应该有怎样的技术知识体系,这是不仅一个刚刚踏入职场的初级程序 ...
- Java进阶4表达式中的陷阱
Java进阶4表达式中的陷阱 20131103 表达式是Java中最基本的组成单元,各种表达式是Java程序员最司空见惯的内容,Java中的表达式并不是十分的复杂,但是也有一些陷阱.例如当程序中使用算 ...
- (转)Java进阶java int与Integer的区别
Java进阶java int与Integer的区别 前言 int与Integer的区别从大的方面来说就是基本数据类型与其包装类的区别: int 是基本类型,直接存数值,而Integer是对象,用一个引 ...
- Java 进阶 hello world! - 中级程序员之路
Java 进阶 hello world! - 中级程序员之路 Java是一种跨平台的语言,号称:"一次编写,到处运行",在世界编程语言排行榜中稳居第二名(TIOBE index). ...
- Java进阶(五)Java I/O模型从BIO到NIO和Reactor模式
原创文章,同步发自作者个人博客,http://www.jasongj.com/java/nio_reactor/ Java I/O模型 同步 vs. 异步 同步I/O 每个请求必须逐个地被处理,一个请 ...
- Java线程间通信方式剖析——Java进阶(四)
原创文章,同步发自作者个人博客,转载请在文章开头处以超链接注明出处 http://www.jasongj.com/java/thread_communication/ CountDownLatch C ...
随机推荐
- 【DP】书的复制
原题链接__戳我噢 [思路] (区间)DP F[I][J]表示前i本书分给j个人用的最短时间 由于每一次j的状态由比j小的状态得出,所以要先枚举j,然后枚举i,接着枚举上一次抄书的人是谁 我觉得,难点 ...
- [Luogu 1850] noip16 换教室
[Luogu 1850] noip16 换教室 好久没有更博客了,先唠嗑一会,花了两天的空闲时间大致做完了昨年的noip真题 虽然在经过思考大部分题目都可出解(天天爱跑步除外),但是并不知道考试时候造 ...
- wpf,vb,位图剪裁的方法
‘ 貌似WPF对GDI+不提供支持,要达到剪裁图像的方法,可以使用image.clip,’不过clip只是对图片的一个遮挡拦截效果,并不改变本身的图片资源.‘下面的代码提供了剪裁图片资源的方法. Di ...
- swift-delegate(代理)或者block传值
1:delegate或者block传值 import UIKit class ViewController: UIViewController,TestDelegatePassValueDelegat ...
- 在Winform中怎么实现图片的旋转,比如说实现仪表盘功能,看代码吧,看太不懂的欢迎问
; //旋转的角度 //Timer定时器 private void timer1_Tick(object sender, EventArgs e) { timer1.Enabled = false; ...
- React Component(dva)
Stateless Functional Components(3种方式) class App extends React.Component function App() const App= Re ...
- 酷派改变者S1(C105/C105-6/C105-8) 解锁BootLoader 并刷入recovery root
首先下载好工具链接:https://pan.baidu.com/s/1qZjOCUw 密码:u2dr 备用下载链接:https://pan.baidu.com/s/1pMlmAef 本篇教程教你如何傻 ...
- C++多个文本读取问题
同时使用两个 ifstream和 freopen 第二个就会失去效用,不知道错在了哪里! 1. 使用freopen打开: bool CPicToolsDlg::readTxt2Seq( std::st ...
- c# 读取 XML
XmlDocument xmldoc = new XmlDocument(); string xmlPath = HttpContext.Server.MapPath("~/*****.xm ...
- js 获取属性名称,再根据这个属性名获取值
if (result.success) { var obj = JSON.parse(result.data); var sltObj = document.getElementById(" ...