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 ...
随机推荐
- RABBITMQ 协议 AMQP协议
https://baike.baidu.com/item/rabbitmq/9372144?fr=aladdin https://github.com/CopernicaMarketingSoftwa ...
- python3-返回函数
函数作为返回值 高阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回. 我们来实现一个可变参数的求和.通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = ...
- php内置函数分析之trim()
官方手册中: 类似函数还有两个:ltrim() 和 rtrim().分别处理字符串的左侧.右侧. trim()的具体实现位于:ext/standard/string.c /* {{{ proto st ...
- bzoj3809 Gty的二逼妹子序列 & bzoj3236 [Ahoi2013]作业 莫队+分块
题目传送门 https://lydsy.com/JudgeOnline/problem.php?id=3809 https://lydsy.com/JudgeOnline/problem.php?id ...
- B1001. 害死人不偿命的(3n + 1)猜想
题目描述 卡拉兹(Callatz)猜想: 对任何一个自然数n,如果它是偶数,那么把它砍掉一半:如果它是奇数,那么把(3n + 1)砍掉一半.这样一直反复砍下去,最后一定在某一步得到n=1.卡拉兹在19 ...
- 演示Git使用
对于新建的repository,第一次提交,完整过程: 13643@DESKTOP-K6CS6SE MINGW64 ~/Desktop/555 $ ls Readme.md run.py 13643@ ...
- web页面上传大文件有没有好的解决方案
本人在2010年时使用swfupload为核心进行文件的批量上传的解决方案.见文章:WEB版一次选择多个文件进行批量上传(swfupload)的解决方案. 本人在2013年时使用plupload为核心 ...
- Strange fuction hdu 2899
Strange fuction Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)T ...
- 攻防世界 | level2
# ! /usr/bin/env python # -*- coding:utf-8 -*- from pwn import * context.log_level = 'debug' elf = E ...
- 文件的上传与下载实现(react、express,create-react-app脚手架)
项目结构为前后端分离,中间布了一层node. 文件上传 要求:将文件信息等发送到后台. html代码 <input type="file" name="file&q ...