java 关于泛型的一些知识点
public class Generic <T>{
private T ob;
public Generic(T ob){
this.ob=ob;
}
public T GetOb(){
return ob;
}
public void setOb(T ob){
this.ob=ob;
}
public void showType(){
System.out.println("实际类型是:"+ob.getClass().getName());
}
public static void main(String[] args) {
Generic<Integer>intg=new Generic<Integer>(3);
intg.showType();
Generic<String>strg=new Generic<String>("sd");
strg.showType();
//intg=strg;使用泛型可以避免这种错误的语句出现 因为会报错
}
}
Java中泛型可以实现参数的任意化,根据实例化类时 尖括号内指定的类型 来改变被实例化的类Generic类中参数的类型。
如果想让定义的泛型类使用指定范围的类型,可以使用extends关键字来进行限制
public class Generic <T extends Integer>{ }
如上,Generic<String>g=new Generic<String>("sds");语句将会报错,因为不是Ineteger类型
如果一个方法的参数是一个不确定类型的参数,那么需要使用通配符<?>来表达即将填入的参数类型不确定,而不是使用<Object>
public void func(Generic <?>generic){
//
}
如果参数部分写为Generic <Object>generic 那么Generic参数化类型被明确Object参数化类型,那么填入Integer参数化类型的Generic对象会报错
被通配符限定的类型参数范围,如下:
public void func(Generic <? extends Number>generic){
//
}
泛型在使用的时候需要注意以下几点:
1. 泛型类型不能实例化,即不能new T
2. 不能实例化泛型数组,即不能T[] array=new T[2];
不能创建一个类型特定的泛型引用的数组,即不能 Gen<String>[] array=new Gen<String>[2];
但是可以用通配符创建泛型类型的引用数组:Gen<?>[] array=new Gen<?>[2];
3. 不能用类型参数替换将基本类型
4. 异常:不能捕获也不能抛出泛型类的异常对象
5. 不能在静态变量或者静态方法中引用类型参数,即:static T ob;是非法的
java 关于泛型的一些知识点的更多相关文章
- Java 容器 & 泛型:五、HashMap 和 TreeMap的自白
Writer:BYSocket(泥沙砖瓦浆木匠) 微博:BYSocket 豆瓣:BYSocket Java 容器的文章这次应该是最后一篇了:Java 容器 系列. 今天泥瓦匠聊下 Maps. 一.Ma ...
- Java之泛型浅解
我觉得学习一个东西,首先得从概念上明白它大概是什么? “泛型”就是“参数化类型”,也就是是把类型当成了一种参数.之前我们看到得函数方法比如: public long add(int num1,int ...
- 关于Java中的String类知识点小总结
Java中的String类知识点 前言 在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串. 如何创建字符串 最简单的方式 String str = "he ...
- Java魔法堂:打包知识点之jar
一.前言 通过eclipse导出jar包十分方便快捷,但作为码农岂能满足GUI的便捷呢?所以一起来CLI吧! 二.JAR包 JAR包是基于ZIP文件格式,用于将多个.java文件和各种资源文件, ...
- [改善Java代码]Java的泛型是类型擦除的
泛型可以减少强制类型的转换,可规范集合的元素类型,还可以提高代码的安全性和可读性,正是因为有了这些优点,自从Java引入泛型之后,项目的编码规则上便多了一条,优先使用泛型. Java泛型(Generi ...
- Java 中泛型的全面解析(转)
Java泛型(generics) 是JDK 5中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter).声明的类型参数在使用时用具体的类型来替换.泛型最主要的应用是在J ...
- Java中泛型 类型擦除
转自:Java中泛型是类型擦除的 Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就是说所有泛型参数类 ...
- Java 泛型 Java使用泛型的意义
Java 泛型 Java使用泛型的意义 @author ixenos 直接意义 在编译时保证类型安全 根本意义 a) 类型安全问题源自可复用性代码的设计,泛型保证了类型安全的复用模板 b) 使用复用性 ...
- 【Java】泛型学习笔记
参考书籍 <Java核心技术:卷1> 泛型, 先睹为快 先通过一个简单的例子说明下Java中泛型的用法: 泛型的基本形式类似于模板, 通过一个类型参数T, 你可以"私人定制&qu ...
随机推荐
- 实现 unity MonoBehaviour API5.4 的消息
顺序(第一次执行.忽略循环) 方法 说明 Editor 1 void Reset() 重置为默认值 ------------------------------------------------ ...
- [资料] 常见的IC芯片解密方法与原理解析!
其实了解芯片解密方法之前先要知道什么是芯片解密,网络上对芯片解密的定义很多,其实芯片解密就是通过半导体反向开发技术手段,将已加密的芯片变为不加密的芯片,进而使用编程器读取程序出来. 芯片解密所要具 ...
- Ubuntu16.04 启用root权限
装了Ubuntu 16.04之后想使用超级权限对系统进行操作 使用命令 su - 切换超级用户,提示输入密码,却怎么都不对,网上找的资料说是没有启用root权限,于是根据网上提供的方法启用root权限 ...
- python:图片拼接
一:尺寸相同的图片拼接 import os from PIL import Image width_i = 200 height_i = 200 row_max = 3 line_max = 3 al ...
- size_t为什么重要
参考:https://www.zhihu.com/question/24773728/answer/66535663 前言:使用size_t可能会提高代码的可移植性.有效性或者可读性,或许同时提高这三 ...
- pip安装包出现timeout的解决办法
今天安装django时老是出现timeout WARNING: Retrying (Retry(total=4, connect=None, read=None, redirect=None, sta ...
- java连接redis5.0单机版报连接超时错误
使用java代码测试redis5.0单机版时,报redis连接超时异常,而linux上的redis能正常访问: redis.clients.jedis.exceptions.JedisConnecti ...
- UITextField 长按文本框指定删除某个位置内容
普通的光标移动,点键盘的删除键,会从最后一位删除,加一UITextField的分类即可 #import <UIKit/UIKit.h> @interface UITextField (Ex ...
- Word文档粘贴到帝国CMS
很多时候我们用一些管理系统的时候,发布新闻.公告等文字类信息时,希望能很快的将word里面的内容直接粘贴到富文本编辑器里面,然后发布出来.减少排版复杂的工作量. 下面是借用百度doc 来快速实现这个w ...
- FastDFS的安装及上传下载(二)
百度云:所有附件的地址 一 安装前的检查 检查Linux上是否安装了 gcc.libevent.libevent-devel,执行如下yum命令检查: [root@node02 ~]# yum lis ...