分享
 
 
 

Java5.0,越来越死板的java

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

java5.0推出了,还号称tiger.我也兴奋的看到了我要的一些语言特征,觉得以后的开发将会方便许多。

然而tiger终究是tiger,让人难以亲近。我试用了下,有很多感受:

.基本数据类型和对象的自动互转

这的确方便了开发是好事,不过引起了当对象为空时如何取值的争论,我倾向抛Null异常;

.import static

这个功能还是应该提供的,不鼓励滥用。

不过我始终觉得import中的这个static太多余了,包也好,类也好,静态常量方法也好,

都可以看作import对象嘛,没有必要用static区分一下的,static反而使语法复杂化了。

.强类型还是更强的类型

强类型编译语言和弱类型脚本语言,我选择前者,也选择了java。强类型的优势我可以说出一些,在编译期能发现和排除一些错误,重构方便,特别当项目比较大时,每次编译通过都让我有一种很放松的感觉。因为类型都检阅过了没问题。但不可否认的是,现在的编程语言有类型弱化的趋势,像python这样的动态类型语言就很受程序员的青睐,java应该对这种现象进行反思。固守编译期强类型这道战线我想还是没错的,但要向更强的类型发展我看完全没必要。而5.0加入的泛型就显得多余,java控制了变量的类型还不够,还想通吃List,Map中的类型控制。本来List,Map只要对象就能放进去,加道控制不是自己给自己设卡么。有几个开发会犯这种错误,就算设错了类型,这种错误到运行期让它抛出就是了,没必要对原本简单的语法大作文章,你难道想在编译期就排除所有错误么?这本就办不到。而且语法又多了个泛型概念,复杂了。

.仍然蠢笨的强制类型转化

像下面这样的语法看是严谨

String str = (String)map.get("str");

其实是很蠢笨的,既然str已经定义是String型的,那么map中取出了值就应自动转到String型进行赋值,

那个强制转化(String)实在多余的很。况且你java还是编译型语言,你完全可以编码使用:

String str = map.get("str");

然后编译成实现如下功能的字节码:

String str = (String)map.get("str");

一门口口声声要减少重复代码,号称面向对象的语言,却在语法上让人写了多少重复代码?

然而tiger仍不思悔改,我行我素。除了那本不该有的泛型Map和List里的对象可以不用强制转型外,

其他赋值语句仍是老模样。

.受连累的for循环

对for循环的改造本是件大好事,可惜还是被强制类型搞得一团糟:

List items = ...;

for (Object item : items){

Item item1 = (Item)item;

...

}

或许你会说可以这样啊:

List<Item> items = ...;

for (Item item : items){

...

}

又是泛型!唉!

.趋于复杂化

泛型,还有如enum的引入等等,都使原本不简单的java变得更复杂。tiger难道真的是一只老虎?可能会有人赞叹其强大,可很难让使用者喜欢上它。

说了这么多java5.0的不是,我也不想抛弃它,真希望它越来越好。也说说我理想中的新java语法吧:

首先是静态编译语言,强类型。但如java1.4及以前的版本那样只对类型控制到变量;

另外最重要的是,要考虑编码员的体验,严谨的语法和好的编码体验本不矛盾,tiger就是制造了这种矛盾。

一门高级编程语言应该争取以最简洁的编码描述最多的信息,而不是以复杂的编码描述简单的信息。

我总结了以下的一些改进,其中借鉴了python的一些语法:

.import别名

import不但可以import包,类,静态成员,还能起个别名,特别是对类。

.强类型+简单编程(聪明的语法)

String str = map.get("str");//编译器自动转型

Integer i = list.get(0);

Integer ii = 123;

.支持自动转型后的for循环也因此变得简单

for Item item in items{

item.getName();

...

}

.如String那样,Map和List作为常用类型,要有方便的构造方法,

String str = "abc";

Map map = {"key1":value1,"key2":value2};

List list = {value1,value2};

用新java写的下面一段代码,也许会让你喜欢:

新java:(强类型)

package myp;

import net.jacker.UtilVarContext UtilVC;//类别名

import net.jacker.base;

public class MyClass {

public String process(Integer in,Map map,List list){

//Integer,Map,List等作为语法层支持的基础类型,类似String

Map map1 = {"abc":new Integer(0),"bbc":new Integer(1)};//{}定义map

List list1 = {"a","b","c"};//{}定义list

String[] strs = ["o","p","q"];//[]定义Array

Integer int0 = 1;//自动识别构造new Integer(1);

Integer[] ints = [1,2,3];

Integer int1 = map1.get("abc");//自动转型

String str1 = list1.get(2);

//for访问list,array

for String item in list1{

out(item);

}

//for访问list,array,使用index方式

for Integer i int index in ints{

out(i);

out(index);

}

for Integer i int index in ints[:-1]{

out(i);

out(index);

}

for Integer i int index in ints[1:10]{

out(i);

out(index);

}

//for访问map

for String key,Integer value in map1{

out(key);

out(value);

}

process1(1,{"str1":str1},{"o","o"});//调用传参将变得简单

process1(new Integer(12),map1,list1);

}

public String process1(Integer in,Map map,List list){

return "success";

}

}

试想一下以上代码如果用“正宗的”java做,用tiger做,会是怎样?

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有