Java 哪些事最困扰你?
相信在学Java编程的小伙伴都会遇到很多的问题,特别是当我们写完程序的时候忽然报个错,而后找了半天,却没发现哪里报错了,“我在哪”,“我在干什么”,“我写了什么”“怎样会这样”,会很爆炸的心态,有没有,小编在刚学习编程入门的时候就是这样的,下面小编整理了少量学习Java最困扰你的那些事:
Try-catch 公告
尽管我才刚刚开始编写 Java 程序,但是在Java 中实现让程序停顿少量时间而后继续运行这件事情已经复杂的令我震惊。除了写下基本的指令完成停顿外,我还必需要用 try-catch 来包裹的这些操作。没准对于大牛来说这不算什么,但是对我来讲这太令人难过了。
还有跟所有 IO相关的异常也让许多简单的事情变得繁琐起来。比方我仅仅想简洁地做些事情,但最后总是会搞砸,。而后我不得不在所有方法上加上“throws Exception”。
没有,没有,还是没有
没有无符号的整形。
没有操作符重载。
没有对象属性。
没有代理商 (虽然我听说 Java 8 中可能引入了代理商或者相似机制,但我还没细看)。
我同样痛恨很多 Java 库中引入板块的方式(比方根据名称加载板块)。相对而言,我更希望在编译时就能检查我需要的依赖库能否已经加载了。
找不到爱…
我恨 Java,就是单纯的恨。负责任地说,我从不使用 Java 写程序的最大因素就是由于我恨它。还有一点就是JRE糟糕的板块化。就算你用了少量加载工具比方Launch4j,你依然需要让客户安装一个超过200 MB 的框架来运行程序。
没有getter、setter
Java还缺少getter和setter注解。这样可以更简单的增加和移除模板代码。
缺乏亮点
Java 缺少少量杀手级的板块。尽管听说少量不错的板块将被加入到Java 9.x 中,但目前为止这是我最大的槽点了。
非暴力不合作
我遇到的最大的麻烦就是如何一起使用基本元素和对象。例如, 把一个char 类型的变量转换成一个列表别提有多吃力了,而且我感觉这种操作根本没必要这么麻烦。
心愿单
我最想要的就是像 Perl 中那种上下文相关的函数了,以及当解决真正的异常时,这些函数可以在一个语言中所扮演的角色。
我还希望 Java 可以支持智能打包返回值,这样我们即可以像在Perl中那样返回一个包含多个值的列表了。
我希望使用异常的标准库还可以在不适合抛出异常的场景下使用并能够解决失败。
还有,另一个烦人的地方就是我在用 StringWriter 时候还要解决 IO 异常。
还缺些什么
缺少宏对我来说使 Java 减分不少(我并不说在 C/C++ 中使用的预解决器宏,而是在Lisp/Scheme 中使用的那种宏)。
不管做什么事情你都需要定义一个类,虽然你可能根本不需要一个类。比如说,我想把一段经常使用的代码提取出来,而后在需要地方使用——为了达到这个目的,我必需要把这段代码封装成一个final static的方法,并放在一个类中。这样一来我还得吃力去给类取一个方便了解的名字……原本这事儿可以很简单(这的确很简单, 尤其是当你可以定义宏的时候)。
有没有搞错
缺乏对泛型的支持。C++ 中的模板要强大的多。
事实上,在Java 中你根本不能在泛型中实例化一个类,除非你把这个类作为参数来公告一个泛型。
你很难给一个类加上结构函数并让它销毁这个类。RAII(一种资源管理模式,见 C++)却一直非常有用。
没有操作符重载。C++ 允许你是将 == 操作符用于比较字符串。同样的,大整数运算由于同样的起因变的很难使用。
呃, 好吧
没有无符号的基础类型。这尼玛是闹哪样啊!
还是getter、setter
1、null(最大槽点)。
2、没有getter和setter注解(例如,没有属性)。
3、Java 只支持位置参数。我喜欢像Smalltalk 那种支持多样化的参数形式,或者者是强制使用关键字参数的Python 3。
比方在 Samlltalk 中调用一个具备两个参数的函数,可以这样做:
myInstance myMethodWithFoo: arg1 Bar: arg2
在 Python中你可以使用下面的语法来调用函数并给函数参数赋值:
my_inst.my_method(foo=arg1, bar=arg2)
4、……不支持多分派(Multiple Dispatch)?
这些是我最先想到的,不过觉得应该还有更多。认真地说,使用回调函数一直是一个大问题,由于它太麻烦了。不过Java 8 中处理了这个问题,我还是很开心的 =)
愚蠢的默认值
默认的可见性。假如没有给变量或者方法一个修饰符,那么这个方法应该是私有的,而不是包内可见。
默认的修改能力。最终类型(在所有情况下)应该是默认的,并用“var”作为修饰符。目前的情况是,程序员很少会把一个方法的参数设置为最终类型,由于那样会让变量很快变得不可读。同时,在一个方法中重写参数也是很少见的情况。
集合接口。Java 中应该提供一个可写的集合接口,现在集合继承自这个可写的接口,只是把所有改变集合内容的方法屏蔽掉。这样就会减少现在你会在Collections.unmodifiable…… 和少量第三方的API中见到的那些令人困惑的历史遗留方法。有了可写的集合接口,Java 将会变得更加类型安全。
缺少表达能力。在用过Scala (或者是最新的PL)之后, 你会觉得Java 非常的繁琐。这是最常见的关于Java 的吐槽,但它这就是事实。
说说异常
被强迫的解决异常——真主保佑你。谁能告诉我为什么我非要用try-catch 来包裹每一个Thread.sleep ……?我素来就没有真正见过那个我被要求去解决的InterruptedException。
我知道我要说的可能不是一个广泛认可的问题,但是我真的同意checked exception(应被检查的异常)很烦人。这些异常让代码变得面目全非还让重构变得不可能。我明白他们为什么存在(而且理论上也说的通),但是他们没为开发者带来什么实质好处。不管你做什么,都不要留一个空的catch 块,就算你认为这个异常永远不会发生。你大可以把这个checked exception用RuntionException(运行时异常)重新封装一下,再抛出去。?
? ? ? ?为了让学习变得轻松、高效,今天给大家免费分享一套Java入门教学资源。帮助大家在成为Java架构师的道路上披荆斩棘。需要入门的资料欢迎加入学习交流群:9285,05736
1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长!
2. 分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3. 不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解!
5. 如有链接无法下载、失效或广告,请联系管理员处理!
6. 本站资源售价只是摆设,本站源码仅提供给会员学习使用!
7. 如遇到加密压缩包,请使用360解压,如遇到无法解压的请联系管理员
开心源码网 » Java 哪些事最困扰你?