毕竟是脱胎换骨于早期C++的玩意,把C++早期的坑都填上了。但非内行出生写的会有很多埋雷的问题。比如对polymorphism的is-a函数关系错误使用(比如非正常使用interface, abstract class,乱extend class, 该写has-a不写非要extends等),autoboxing错误使用,不理解各种不同数据结构的优化状态如何选择,generic的covariance和contravariance乱用。举个最简单的例子,很多非专业人士会在HashCode的第一个p*变量的地方选那种entropy很低的变量,比如出生年份,年龄等,要知道很多数据出生年龄并不是平均分配的,而是normal分配的。这样会造成hash塌陷成一个一个红黑树的时候,出现不平均2^n bucket的分配,影响hash性能,因为hashcode是根据中国剩余定理的 Z/p*v X Z/2^n 同构于 Z/ p*v x 2^n 来分布的,可惜非科班的很可能不知道这点,把小entropy的值先乘了一个质数。。。只是举一个简单的例子。写是都能写,写的好坏就有大差异了。