爪哇:“堆污染”


63

不可修饰类型中的“ 堆污染 ” (Java™教程>学习Java语言>泛型(已更新))

为什么这样称呼它?


3
在项目中没有任何警告的充分理由。

@ThorbjørnRavnAndersen好人之一。但仍然-该名称后应有一个原因/助记符设备。这很有趣,但即使Google也似乎不知道为什么。

Answers:


72

堆污染只是意味着堆中有“坏东西”。这类似于(例如)水污染,这是您水中有“坏东西”的地方。

具体来说,这里的坏东西是类型A对象,B根据静态类型,您应该拥有类型对象...。静态类型中的一些漏洞允许坏的东西泄漏到堆中…… ClassCastExceptions在运行时,这很可能造成损坏(例如意外)。

这并不是一个特别好的类比,但是它是Java专家创造的术语……他们(实际上)已经在您链接到的页面以及其他地方定义了它。


但仍然-该名称后应有一个原因/助记符设备。

为什么要有?在英语中,有很多单词和短语正在使用,没有人真正知道其来源或原因。或起源已知但不合逻辑的地方。例如,术语“ 错误 ” 的假定起源是指计算机程序中的缺陷。或流行文化中“量子飞跃”一词的当前含义。或“同性恋”一词。

(但是,在“堆污染”的情况下,>>是<已知的,并且选择>> is <<的原因是不言而喻的……对于具有相同语言和文化背景的人们作者。)

这很有趣,但即使Google也似乎不知道为什么。

并不是的。这只是意味着以前没有人想到过在Google索引的地方要求定义。1)用法仅限于Java编程AFAIK,并且2)对于大多数使用该术语的人来说,类推是显而易见的。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.