|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。js
JunsanJin
日期:2005-03-25
邮箱:junsan21@126.com;junnef21@sohu.com
Jsdk5.0中新增了良多的特征,如泛型、加强的轮回、改善的装、拆箱、静态引进等,年夜年夜加强了java言语的易用性。
我如今正在做一个从com+(dcom)平台到j2ee平台移植的项目,两头有良多列举范例的界说,之前做起来要引进第三方类库,大概本人写类库,大概爽性界说成静态变量利用,很不便利,并且大概会发生良多成绩。Jsdk5.0的公布恰好办理了这些成绩。
这里就列举的使用举一个小例子申明,信任如许更简单了解java中列举的用法。
一般无值列举范例可界说成以下的情势:
privateenumMyColor{Red,Yellow,Blue}
但我们用的时分良多情形下会用到值,以是上面的测试类更能申明java中列举范例的壮大功效,代码以下:
classEnumTest
{
privateenumMyColor//界说一个MyColor的列举范例
{
Red(1),//界说列举范例的一个成员
Yellow(2),
Blue(3);
privatefinalintnum;//序号的存储属性,因为序号一般对照不乱不但愿被改动,以是声明成final
MyColor(intnum)//相似于类机关器的初始化体例,其会主动轮回给成员赋值
{
this.num=num;
}
privateintgetNum()//获得对应成员的序号
{
returnnum;
}
}
publicvoidshowColor()//表露给内部的会见接口
{
for(MyColormycolor:MyColor.values())//这里用的新的加强的轮回体例
System.out.println(mycolor+"="+mycolor.getNum());
MyColorscolor=MyColor.Blue;
System.out.println(scolor);
if(scolor.getNum()==3)//这里就是序号对照
{
System.out.println("true");
}
}
publicstaticvoidmain(Stringargs[])//测试我们的类
{
EnumTesttest=newEnumTest();
test.showColor();
}
}
在命令行下输出:
javac-source1.5EnumTest.java
注:有些5.0编译器默许以1.4.2为默许编译属性,以是,新特征没法辨认,因而,要在编译命令行中到场–source1.5指定利用新的特征。
编译文件,然后输出
javaEnumTest
运转了局为:
Red=1
Yellow=2
Blue=3
Blue序号为:3
True
关于列举范例的成员我们不但能够指定序号,还能够指定其多个属性,还能够写良多办法在内里,由于java中的列举就是面向对象的,是一个真实的类,就把java中的列举当做一个类操纵就好了。如sdk带的文档中的例子:
publicenumPlanet{
MERCURY(3.303e+23,2.4397e6),
VENUS(4.869e+24,6.0518e6),
EARTH(5.976e+24,6.37814e6),
MARS(6.421e+23,3.3972e6),
JUPITER(1.9e+27,7.1492e7),
SATURN(5.688e+26,6.0268e7),
URANUS(8.686e+25,2.5559e7),
NEPTUNE(1.024e+26,2.4746e7),
PLUTO(1.27e+22,1.137e6);
privatefinaldoublemass;//inkilograms
privatefinaldoubleradius;//inmeters
Planet(doublemass,doubleradius){
this.mass=mass;
this.radius=radius;
}
privatedoublemass(){returnmass;}
privatedoubleradius(){returnradius;}
//universalgravitationalconstant(m3kg-1s-2)
publicstaticfinaldoubleG=6.67300E-11;
doublesurfaceGravity(){
returnG*mass/(radius*radius);
}
doublesurfaceWeight(doubleotherMass){
returnotherMass*surfaceGravity();
}
}
详细请参考sdk文档中的$jdk-1_5_0-doc$docsguidelanguageenums.html。
对于一个大型项目,如果用java来作,可能需要9个月,并且可能需要翻阅10本以上的书,但如果用ruby来作,3个月,3本书就足够了,而.net也不过3,4本书足以,这就是区别。 |
|