|
整体来说,Java和C#可以算作是非常近亲的语言,基本架构其实都差不多。最近在做Java的框架,框架基本做完(后面我会开源这个项目),今天来吐槽一下Java语法的不友好度(开发工具就不要对比了,VS确实是宇宙第一):
1) 属性
C#类的成员分域,属性和方法,Java没有属性的概念,本质上Java的域+访问器就等于C#的属性,但方便度真的不如C#,C#的语法非常简洁:property TypeXXX PropertyNameXXX {get;set;};而Java必须是域+访问器,关键是绝大部分的访问器都是基本不变的语句,可以采用生成方式来产生代码,但一大堆这样的代码放在哪里,一点都不简洁。
2)泛型
因为是做底层框架,大量的用到泛型,说实在的Java的泛型跟C#比,方便度太低,而且功能上也欠缺,比如要获取泛型的参数类型,C#一个typeof(T)就解决了,Java获取就非常难搞,有的可以实现,有的还不能实现,比如List<T>,如果是类成员,通过一系列的反射还可以曲线救国获得,但如果不是类成员,比如泛型方法里的参数类型,就很难获取,List<T> A,如果A不为空,可以用A.get(0).getClass()来实现,但如果A为空呢?而直接用List<T>.class,其实得到的ArrayList<Object>之类的。
3)虚拟函数
Java默认都是虚拟函数,这个有好处也有坏处,C#是虚拟和普通函数都有,从完备性来说,都是虚拟函数还是有问题的。当然,Java可以用final来变现实现。
4)函数参数的缺省值和重载
C#可以通过为参数缺省值来减少大量的重载代码,而Java必须用重载解决,多了很多垃圾代码。另外,C#还可以通过参数名赋值的方式来调用方法,这就更增加了灵活性,Java是没法实现的。
5)扩展方法
扩展方法还是非常好用,但Java好像不支持。
6)var A=b;这种类型推理,可以提高写代码的效率,Java好像不支持。
整体来说,Java的语法对于提高工作效率来说,还是差的很远,当然,事情都有两面,Java也为大家提供了很多低难度工作需求。
|
|