java是世界上最烂的语言,没有之一
现在流行的语言,java是最烂的。
对于从C#转过来的我来说尤其如此。在一个java项目告一段落之际,现在让我吐槽一下:
1. java的泛型让人费解。类型擦除让泛型的优势荡然无存。本来泛型的一大优势是避免装拆箱的性能开销。在java里,仅仅就剩下语法糖的功能。况且这颗糖非常的不好吃。
2. java里的lambda表达式实在是难看得要死。本来业界都用=>来代表箭头函数,java非要用->显得和别人不同。这也就算了,凡用到lambda的地方还非要steam()转一下,对于数组,还要Array.stream(), 要多别扭就有多别扭,要多难看就有多难看。更坑爹的是,还不支持延迟加载,用过一次再接着用就报错!
3. java的方法的异常处理声明让人恼火。我们知道,现在AOP编程,异常都是在框架上层集中处理的。底层只管抛就是了。一般情况下,不主张在底层用catch“吃掉”异常. 这就导致,如果我不想吃掉异常,就得抛出,如果要抛出,就得在方法声明后加throws xxxException。而如果一个方法调了其他的方法,也要跟着throws 这个Exception, 如果调了n多有异常的方法就得throws n多个Exception. 当然有人会说,你不会只throws 单一的基类Exception吗?这样倒是可以简单点。 那这个throws机制还有什么用呢?
4. java没有随用随丢的匿名对象,类似C#的new { a, b}, 或者像js那样更简单的{a, b}。这在传给api传参时,或者webapi返回的结果,是由几个值组成,但又不值得定义一个类时,显得特别啰嗦,导致我要么用一个hashmap来装,要么再专门定义一个只用一次的类。
5. java没有var的隐式类型声明。接受一个很长的类型名的返回结果时,特别不简洁。这个据说在java12以后支持。但是现在谁敢用java8以上的版本?
6. java没有扩展方法的机制。导致现在java的Util类满天飞。你如果想想像别的语言那样,一气点下去,简直是作梦。你不得不在写好一个对象以后,发现它没有你要的方法,然后不停把光标调到对象前面,加util,再加括号,再移到对象后面,再加反括号。太不顺畅了!
7. 现在流行的spring-boot实在是太慢了。我写一个单元测试,运行一次,初始化都要一分钟,搞得我现在烟抽得越来越多!
当我,我才写两个月的java代码,难免对java有所偏见。欢迎各位java大神拍砖!