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 ...
随机推荐
- qemu-kvm使用
创建镜像qemu-img create -f qcow2 test-vm.qcow2 10g 修改镜像大小qemu-img resize test-vm.qcow2 +10G 安装系统 qem ...
- Linux--shell grep与正则表达式--04
一.grep程序 Linux下有文本处理三剑客:grep.sed.awk grep:文本 行过滤工具 sed:文本 行编辑器(流编辑器) awk:报告生成器(做文本输出格式化) 1.grep grep ...
- Sass @debug
@debug 在 Sass 中是用来调试的,当你的在 Sass 的源码中使用了 @debug 指令之后,Sass 代码在编译出错时,在命令终端会输出你设置的提示 Bug: @debug 10em + ...
- php session之多级目录存储
当选择以文件形式保存session到服务器时,需要制定保存路径.用到php.ini中的session.save_path,其有三种配置写法: session.save_path = "N;/ ...
- thinkphp 系统变量
一.查看可用变量 dump($_SERVER); 可以直接在html输出系统变量的值 <p>{$Think.server.HTTP_HOST}</p>. 二.环境变量 1.查看 ...
- k8s手动安装-1
1.组网master可以使用双网卡,一个外网网卡连接外网,并且做proxy server,一个host-only网卡和node连接. 新版vitualbox配置host-only需要在主机网络管理器中 ...
- [CH5E02] A Little Shop of Flowers
问题描述 You want to arrange the window of your flower shop in a most pleasant way. You have F bunches o ...
- 关于VS调试
环境配置始终是我的弱项,碰到关于环境配置的问题就各种束手无策.但是这种事情,不能总凑合着,尤其你进不去环境或者没法调试的时候,代码写的多漂亮都没用.下面就来说一下最近关于调试的了解. 首先我们现在的项 ...
- JS自定义 Map
<script>function HashMap(){this.map = {};}HashMap.prototype = { put : function(key, value){ th ...
- PHP实现跨服务器session共享的方法教程
今天带来PHP实现跨服务器session共享的方法教程. 本文实例讲述了PHP实现cookie跨域session共享的方法.分享给大家供大家参考,具体如下: 做过web开发的小伙伴们都了解cookie ...