java dynamic是什么,讓我們一起了解一下:
dynamic在java中是動(dòng)態(tài)類(lèi)型的意思,像動(dòng)態(tài)代理就是利用Java的反射技術(shù),在運(yùn)行時(shí)創(chuàng)建一個(gè)實(shí)現(xiàn)某些給定接口的新類(lèi)(也稱(chēng)“動(dòng)態(tài)代理類(lèi)”)及其實(shí)例(對(duì)象),代理的是接口,不是類(lèi),更不是抽象類(lèi)。
什么是動(dòng)態(tài)類(lèi)型?
了解什么是動(dòng)態(tài)類(lèi)型首先我們了解靜態(tài)類(lèi)型,在我們平時(shí)定義一個(gè)int i=1就是靜態(tài)類(lèi)型,靜態(tài)類(lèi)型就是我們?cè)跊](méi)有編譯的時(shí)候已經(jīng)明確的知道他是一個(gè)int類(lèi)型,動(dòng)態(tài)語(yǔ)言是我們?cè)谶\(yùn)行時(shí)才會(huì)知道的類(lèi)型。所以我們?cè)诰帉?xiě)動(dòng)態(tài)類(lèi)型的時(shí)候是無(wú)法使用vs的智能提示,因?yàn)榫幾g器也不知道他是一個(gè)什么類(lèi)型。
dynamic?i?=?1; Console.WriteLine(i.GetType()); dynamic?str?=?"1"; Console.WriteLine(str.GetType());
使用動(dòng)態(tài)類(lèi)型的優(yōu)缺點(diǎn)有哪些?
優(yōu)點(diǎn):
1、減少?gòu)?qiáng)類(lèi)型的轉(zhuǎn)換。
2、延遲加載。
3、調(diào)用C#類(lèi)型中不存在的其他語(yǔ)言的類(lèi)型。
缺點(diǎn):
1、沒(méi)有智能提示。
2、需要預(yù)先知道接收的數(shù)據(jù)結(jié)構(gòu)。
案例分析:java中dynamic介紹@dynamic的用法,代碼如下。
@interface?Person?:?NSObject {undefined //?must?provide?a?ivar?for?our?setter?and?getter NSString?*_name; } @property?(copy)?NSString?*name; @end @implementation?Person //?@dynamic?tells?compiler?don't?generate?setter?and?getter?automatically @dynamic?name; //?We?provide?setter?and?getter?here -?(void)?setName:(NSString?*)name {undefined if?(_name?!=?name)?{undefined [_name?release]; _name?=?[name?copy]; } } -?(NSString?*)?name {undefined return?_name; } @end?//?Person int?main(int?argc,?const?charchar?*?argv[]) {undefined NSAutoreleasePool?*pool?=?[[NSAutoreleasePool?alloc]?init]; Person?*a?=?[[Person?alloc]?init]; a.name?=?@"Hello";?//?Ok,?use?our?setter a.name?=?@"Hello,?world"; NSLog(@"%@",?a.name);?//?Ok,?use?our?getter [a?release]; [pool?drain]; return?0; }?//?main
以上就是小編今天的分享了,希望可以幫助到大家。