Java泛型-类型参数化
一. 泛型
解决支持多类型参数的方案:
1, 重载: 在同一个类中,方法名相同,参数不同
不足之处: 代码过于重复
public class Tool{
public String arrToStr(String[] arr, String symbol){
String str = "";
for(String v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
public String arrToStr(int[] arr, String symbol){
String str = "";
for(int v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
public String arrToStr(double[] arr, String symbol){
String str = "";
for(double v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
}
2, 使用Object
好处: 简单
不足: 什么都支持(类型无法得到限制)
public class Tool{
public String arrToStr(Object[] arr, String symbol){
String str = "";
for(Object v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
}
3, 泛型: 广泛的类型(默认为任意类型)
但是泛型可以设置上限(以继承的方式实现)
3.1 定义方法泛型
public class Tool{
//<X>: 程序员定义的一种数据类型即泛型,泛型名: X
//X : 默认为Object
public <X> String arrToStr(X[] arr, String symbol){
String str = "";
for(X v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
//设置上限为Number
public static <X extends Number> String arrToStr(X[] arr, String symbol){
String str = "";
for(X v: arr){
str += symbol + v;
}
return str.substring(symbol.length());
}
}
3.2 类泛型定义
public class Datas <X>{
private X x;
public Datas(X x){
this.x = x;
}
public X getX(){
return x;
}
public void setX(X x){
this.x = x;
}
public static void main(String[] args) {
Datas datas = new Datas(50);
//不声明: X为Object
Datas datas1 = new Datas("哈哈");
Datas<Car> datas2 = new Datas<>(new Car("吉利",30));
//声明 X为 Car类型
Datas<Integer> datas3 = new Datas<>(50);
}
}
Java泛型-类型参数化的更多相关文章
- java泛型-类型擦除
详细内容:参考java编程思想P373,p650. Java 泛型(Generic)的引入加强了参数类型的安全性,减少了类型的转换,但有一点需要注意:Java 的泛型在编译器有效,在运行期被删除,也就 ...
- java 泛型 类型作为参量 Class<T> transform
Class<T> transform T:作为类型,用于定义变量: transform:作为具体类的类:用于创建实例. 类型信息是脱敏的具体类: 可以使用class的具体功能: 不能使用具 ...
- java泛型 8 泛型的内部原理:类型擦除以及类型擦除带来的问题
参考:java核心技术 一.Java泛型的实现方法:类型擦除 前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首 ...
- java 泛型的类型擦除与桥方法
泛型类 --代码参考:java核心技术 卷1 第十版 public class Pair<T> { private T first; private T second; //构造器 pub ...
- java泛型(二)、泛型的内部原理:类型擦除以及类型擦除带来的问题
微信公众号[程序员江湖] 作者黄小斜,斜杠青年,某985硕士,阿里 Java 研发工程师,于 2018 年秋招拿到 BAT 头条.网易.滴滴等 8 个大厂 offer,目前致力于分享这几年的学习经验. ...
- JAVA泛型中的有界类型(extends super)(转)
JDK1.5中引入了泛型(Generic)机制.泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数.这种参数类型可以用在类.接口和方法的创建中,分别称为泛型类.泛型接口.泛型方法. Ja ...
- Java泛型总结---基本用法,类型限定,通配符,类型擦除
一.基本概念和用法 在Java语言处于还没有出现泛型的版本时,只能通过Object是所有类型的父类和类型强制转换两个特点的配合来实现类型泛化.例如在哈希表的存取中,JDK1.5之前使用HashMap的 ...
- 类型擦除真的能完全擦除一切信息吗?java 泛型揭秘
背景 我们都知道泛型本质上是提供类型的"类型参数",它们也被称为参数化类型(parameterized type)或参量多态(parametric polymorphism).其实 ...
- Java 泛型,你了解类型擦除吗?
泛型,一个孤独的守门者. 大家可能会有疑问,我为什么叫做泛型是一个守门者.这其实是我个人的看法而已,我的意思是说泛型没有其看起来那么深不可测,它并不神秘与神奇.泛型是 Java 中一个很小巧的概念,但 ...
- java 泛型的内部原理:类型擦除以及类型擦除带来的问题
一.Java泛型的实现方法:类型擦除前面已经说了,Java的泛型是伪泛型.为什么说Java的泛型是伪泛型呢?因为,在编译期间,所有的泛型信息都会被擦除掉.正确理解泛型概念的首要前提是理解类型擦出(ty ...
随机推荐
- JVM划重点:引用类型、垃圾回收算法和内存划分
一.Java四种引用类型 每种编程语言都有操作内存中元素的方式,例如在 C 和 C++ 里是通过指针,而在 Java 中则是通过"引用"(Reference).在 Java ...
- 我们不可能永远都在救火 ——Scrum中技术债务“偿还”指南
技术债务是指开发人员为了加速软件开发,在应该采用最佳方案时进行了妥协,改用了短期内能加速软件开发的方案,以至于未来给自己带来额外的开发负担. 软件工程师 Ward Cunningham首次将技术的复杂 ...
- 手把手教你实现PyTorch版ViT:图像分类任务中的Transformer实战
作者:SkyXZ CSDN:SkyXZ--CSDN博客 博客园:SkyXZ - 博客园 ViT论文Arxiv地址:An Image is Worth 16x16 Words: Transformers ...
- 在SpringCloud中的相关报错
在SpringCloud中使用REST服务时 使用前需要先在配置类中注入RestTemplate的Bean 然后再使用 自动装配即可 @Autowired private RestTemplate r ...
- 用Java获取本机IP或者请求用户的真正IP地址
一.在Web请求中获取请求用户的IP地址 public static String getUserRealIP(HttpServletRequest request) throws UnknownHo ...
- ArcObjects SDK 018 Geometry
1.Geometry体系结构 如果要看完整的Geometry体系结构,那么可以去查看帮助中的类结构图,非常完整和严谨.可以通过下图方式打开. 点击打开后,会发现里面的结构非常复杂.但如果我们抽丝剥茧的 ...
- About me and the blog
About me and the blog About me 坐标\(CQ\),可以叫我\(Luoyu\)/洛雨/呆猫(似乎混入了奇怪的东西,时常模仿呆猫说话故而得名)/猫老大(???不知道啥时候下一 ...
- 前端开发系列004-基础篇之JavaScript的字符串
本文将重点介绍javaScript语言中字符串,操作字符串的常见方法以及具体的代码实现等. 一.字符串简单介绍 关于字符串(类型),其实在我的另一篇文章中 JavaScript语言基础已经有过下面这段 ...
- POLIR-Society--Networking- {关系、理论与管理}: 权利 - Giving(给于)+Taking(取得)+运用好+"人性"
POLIR-Society--Networking- {关系.理论与管理}: 权利 - Giving(给于)+Taking(取得) 运用好"权利"+"人性" E ...
- "Management" by Stephen P. Robbins and Mary Coulter现代管理科学理论
现代管理科学理论: Major Approaches to Management 3000 BC – 1776: Early Management 1911 – 1947 Late: Classica ...