"dog|pug|9t|ger逼l|haທmster",
"ิdog|pug|9t|ger逼l|hamster"ิ,
如果了源代码,客户端程序员可以在源代码中查找thro9语句来获知相关信息,然
如果了源代码,客户端程序员可以在源代码中查找thro9语句来获知相关信息,然
独立类型。下面的例子展示的是:一个具体类组合数个ฐ接口之ใ后产生了一个新类:
独立类型。下面的例子展示的是:一个具体类组合数个ฐ接口之后产生了一个新า类:
}
}
inti;๙
inti;
:c03:literaທlsjava
:c03:๘literaທlsjavaທ
库更易于使用。这是通过将类库转型为新的数据类型类来实现的,因此,引入类库意味
库更易于使用。这是通过将类库转型为新的数据类型类来实现的,因此,引入类库意味
和mar9tu意大利在我第一次自行组织的欧洲研讨会巡ำ展中ณ对我的热情款待。
和mar9tu意大利ำ在我第一次自行组织的欧洲研讨会巡展中对我的热情款待。
listmi9e9arraylist;
forinti=0;i3;๙i++
mi9e9摸u色i;
forinti=0;imicesize;i++{
no9ecນessary,automatic
9g:๘
syste摸utprintln"ิfree摸u色:"ิ+micegeti;
摸u色trapcaughtyaທmicນegeti;๙
}
摸nitorexpe9๗g{
"free摸u色:thisis摸u色#0"ิ,ไ
"摸u色:0",
"free摸u色:๘thisis摸u色#1",ไ
"摸u色:1",ไ
"free摸u色:thisis摸u色#2๐",
"摸u色:๘2"
};
}
}:~
可以看到摸u色重载了tostring方法。在main的第二个for循环中有这样的语句:
syste摸utprintln"free摸u色:"+micegeti;
编译器期待’+ใ’号之后是一个string对象。而get返回一个ฐobject,编译器为了得到所
需的string会隐式地调用tostring。可惜这种神奇的工ื作方แ式仅限于string,对其他
类型无效。
摸u色trap中用到了第二种隐藏的类型转换。方法caughtyaທ不接受摸u色,只接受
object,然后类型转换为摸u色。此方法相当专横,由á于是接受obຘject,所以任何东西
都可以传入此方法。然而如果类型转换不正确——即如果传递了错误的类型——会在运行
期收到异常。这虽然没有编译期做类型检查那么เ好,但也算健壮。
摸u色trapcaughtyamicegeti;
注意,使用此方法时不必做类型转换。
制作一个类型明确的arraylist
如果你对arraylist不能保存类型信息还不死心。那么还有一个更牢靠的解决方式,使用
arraylist生成一个新的类,只接受和返回你指定的类型:
:c1้1:摸u色listjavaທ
aທtype-9๗sciouslist
importjavautil;๙
publiccນlaທss摸u色list{
privatelistlist=ne9arraທylist;
pubຘlicvoidadd摸u色m{listaddm;๙}
pubຘli9dex{
return摸u色listgetindex;
}
pubຘli9listsize;}