java dynamic是什么,讓我們一起了解一下:
dynamic在java中是動態類型的意思,像動態代理就是利用Java的反射技術,在運行時創建一個實現某些給定接口的新類(也稱“動態代理類”)及其實例(對象),代理的是接口,不是類,更不是抽象類。
什么是動態類型?
了解什么是動態類型首先我們了解靜態類型,在我們平時定義一個int i=1就是靜態類型,靜態類型就是我們在沒有編譯的時候已經明確的知道他是一個int類型,動態語言是我們在運行時才會知道的類型。所以我們在編寫動態類型的時候是無法使用vs的智能提示,因為編譯器也不知道他是一個什么類型。
dynamic?i?=?1; Console.WriteLine(i.GetType()); dynamic?str?=?"1"; Console.WriteLine(str.GetType());
使用動態類型的優缺點有哪些?
優點:
1、減少強類型的轉換。
2、延遲加載。
3、調用C#類型中不存在的其他語言的類型。
缺點:
1、沒有智能提示。
2、需要預先知道接收的數據結構。
案例分析: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
以上就是小編今天的分享了,希望可以幫助到大家。