Java 泛型(generics)是 JDK 5 中引入的一个新特性,允许在定义类和接口的时候使用类型参数(type parameter)。声明的类型参数在使用时用具体的类型来替换。泛型最主要的应用是在 JDK 5 中的新集合类框架中。对于泛型概念的引入,开发社区的观点是褒贬不一。从好的方面来说,泛型的引入可以解决之前的集合类框架在使用过程中通常会出现的运行时刻类型错误,因为编译器可以在编译时刻就发现很多明显的错误。而从不好的地方来说,为了保证与旧有版本的兼容性,Java 泛型的实现上存在着一些不够优雅的地方。当然这也是任何有历史的编程语言所需要承担的历史包袱。后续的版本更新会为早期的设计缺陷所累。
开发人员在使用泛型的时候,很容易根据自己的直觉而犯一些错误。比如一个方法如果接收 List
更多内容推荐
深入探索 JVM 自动资源管理
Object::finalize的弃用是Java生态系统的一个不同寻常的过程。我们深入Hotspot JVM,查看其工作机制。我们还比较了RAII和Java 7,以及try-with-resources(TWR)语法。文章对比了这些用于自动资源管理的完全不同方法,并解释了TWP应被应用开发人员用于替代终结的原因。
Java 值类型的当前状态
甲骨文正在将值类型引入到Java中,我们对目前的状态进行了更新。
.NET 或将引入类型类和扩展
类型类是另外一项正被考虑引入.NET未来版本的特性。在提案“外观和扩展(Shapes and Extensions)”中,该特性被称为外观,它们将大幅提升.NET泛型的能力。
14|类型系统:有哪些必须掌握的 trait?
trait 到底做到了什么?延迟绑定了实现行为。
2021-09-24
编程范式游记:基于原型的编程范式
基于原型的编程其实也是面向对象编程的一种方式。没有 class 化的,直接使用对象。
2019-07-16
a + b:动态类型是灾难之源还是最好的特性?(下)
JavaScript中,可不仅仅只有“类型转换”表现出来动态类型的特性。
2019-12-27
方法内联(下)
完全去虚化通过类型推导或者类层次分析,将虚方法调用转换为直接调用。它的关键在于证明虚方法调用的目标方法是唯一的。
2018-09-07
C#的未来:不可变类
本文是C#的未来系列文章的最后一篇了,这次我们将讨论第159号提案,它建议在编译器中加入对不可变类的支持。
Java Nestmate 稳步推进
Oracle提出了JEP 181“基于嵌套的访问控制”,即“Nestmate”。该JEP将是对Java平台的一次技术提升,可偿清早在20年前Java 1.1就提出的技术债务。
Xtend 2.4 发布,新版添加了 Active 注解,对 Android 的支持等新特性
Xtend是一门静态编译型的JVM编程语言,它可以通过类型推导来减少样板代码。新发布的Xtend2.4增加了active注解,通过active注解可方便地生成标准模式并减少代码错误。除此之外该版本还添加了对Android的支持以及集合字面量(collection literals)的功能。InfoQ采访了Sven Efftinge并对Xtend2.4发布的新特性进行更深入的了解。
结构体及其方法的使用法门
结构体类型的嵌入字段比较容易让Go语言新手们迷惑,所以我在本篇文章着重解释了它的编写方法、基本的特性和规则以及更深层次的含义。
2018-09-10
Julia 编程基础(四):如何用三个关键词搞懂 Julia 类型系统
在 Julia 中,任何值都是有类型的。
微软提议在 C# 7 中为引用增加选项类型
微软C#语言的项目经理Mads Torgersen,最近提议在C# 7中引入可为选项类型(option types)的引用类型。加入选项类型能让C#语言变得更安全,正如Torgersen所说,在C#里,因为任一引用类型都能引用一个空值,从而导致了空引用异常的泛滥成灾,而使用选项类型能减少空引用异常的产生。
return Object.create(new.target.prototype):做框架设计的基本功:写一个根类
写好一个根类是做JavaScript框架设计的基本功。
2019-12-18
John Heintz 谈如何向 Java 注解添加行为
将常见可重用的行为以定制注解的方式添加到Java应用中是一种非常棒的方式。来自于New Aspects的John Heintz在最近举行的No Fluff Just Stuff(NFJS)Java研讨会上讨论了向Java注解添加行为的设计技术。
Java 值类型设计进展
Valhall项目发布了一项重大更新,宣布了JVM值类型中一些初步的、尚处于极早期阶段的设计概念。
Java 最大的错误:检查异常
在Java中,checked exception(检查异常)一直是一个很有争议的特性,本文作者对此进行了深入探讨。
新 JEP 将简化 Java 类型变异
新的JEP Candidate旨在简化处理Java中复杂的类型变异的概念。这个新的JEP Candidate可能会在Java 10中推出,提供了在定义的泛型类型中指定目标对象默认变异的方法,而不是在泛型类型实例化时通过通配符指定。这个新方案并不会代替通配符,而是减少对通配符的需求。
关于是否在 C#中加入不可空引用类型的争论
来自微软的Mads Togersen在近期所提出的一条提议,即在C#语言中加入对不可空引用类型的支持在.NET社区中引起了热烈的争论。人们对此提议的反应大相径庭,既有人对此表示赞赏,也不乏倾向于保持现状的意见。
推荐阅读
Java 特性聚焦:局部变量的类型推断
Java 10 var 关键字详解和示例教程
Java 字节码忍者禁术
单一类型依赖查找:如何查找已知名称或类型的 Bean 对象?
2020-01-23
SFINAE:不是错误的替换失败是怎么回事?
2019-12-27
12|类型系统:Rust 的类型系统有什么特点?
2021-09-20
那些年,我们踩过的 Java 坑
电子书
大厂实战PPT下载
换一换 万俊峰 | 晓黑板 研发负责人,好未来技术委员会委员
魏伟 | 华为 毕昇编译器架构师
杨浩 博士 | 华为 文本机器翻译实验室主任
评论