51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 2389|回复: 0
打印 上一主题 下一主题

[品茗闲话] 吐槽一下Java的不友好

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2019-2-18 17:13:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
整体来说,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也为大家提供了很多低难度工作需求。


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-4-24 02:39 , Processed in 0.061464 second(s), 23 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表