我一直在研究许多OSS项目,其中一些项目仍然没有采用泛型。他们使用的是原始类型(例如List foo),而不是泛型类型(例如List<string> foo)。其他项目在过去几年才开始使用泛型,甚至认为它们已经存在了很长一段时间。
我很想知道为什么人们和项目避免使用泛型,因为(在我看来)现在使用泛型(而不是rawtype)有缺点。对于那些使用java,但不使用泛型的人来说,什么(如果有的话)会使您切换?
发布于 2010-12-15 02:27:54
有些项目必须在较旧的JVM上运行。例如,一些项目甚至可能还不能使用assert (Java1.4中引入的),因为它们仍然需要在Java1.3JVM上工作。
另一个因素是简单的惯性:如果代码已经编写好了,并且在不添加泛型的情况下执行得很好,那么就没有理由冒更改代码的风险了。但是今天,有几种自动工具可以帮助您迁移Java代码以使用泛型。
发布于 2010-12-15 02:19:10
在尝试理解这样的东西时,将一种语言的每一个新版本看作一种不同的语言是很有帮助的。不同的特征,不同的习语,不同的用户.
当然,对于上一版本的用户来说,新版本是一种相当容易使用的语言.但有些程序员--实际上有相当多的程序员--学习一种语言,然后停下来。无论是K&R C,80年代后期的C++,VB5,Java1.4,还是C# 1.1.你会发现程序员,甚至整个商店,他们学会了一种语言的一个版本,买了一本参考书,把它放在书架上,然后开始使用它。建议他们花更多的时间跟踪并将每一个新标准整合到他们的工作中,这比建议他们一边打一边玩橘子,或者开始使用Scala --这似乎是不必要的--荒谬得多。
考虑到这一点,请阅读:我如何向我的团队介绍新技术?
发布于 2010-12-15 03:18:25
另一个答案是,一些程序员并不真正理解他们在做什么。Java是一种非常容易使用的语言,它不可避免地会导致人们学习Java,使其达到“可用”的程度,而且永远不会有进一步的进展。我知道,作为一个16岁的孩子,我对Java也有足够的了解
https://softwareengineering.stackexchange.com/questions/26530
复制相似问题