開心生活站

位置:首頁 > IT科技 > 

java,dynamic

IT科技2.34W

<link rel="stylesheet" href="https://js.how234.com/third-party/SyntaxHighlighter/shCoreDefault.css" type="text/css" /><script type="text/javascript" src="https://js.how234.com/third-party/SyntaxHighlighter/shCore.js"></script><script type="text/javascript"> SyntaxHighlighter.all(); </script>

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#類型中不存在的其他語言的類型。

java dynamic

缺點:

1、沒有智能提示。

2、需要預先知道接收的數據結構。

案例分析:java中dynamic介紹@dynamic的用法,代碼如下。

@interface Person : NSObject{undefined// must provide a ivar for our setter and getterNSString *_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{undefinedif (_name != name) {undefined[_name release];_name = [name copy];}}- (NSString *) name{undefinedreturn _name;}@end // Personint main(int argc, const charchar * argv[]){undefinedNSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];Person *a = [[Person alloc] init];a.name = @"Hello"; // Ok, use our settera.name = @"Hello, world";NSLog(@"%@", a.name); // Ok, use our getter[a release];[pool drain];return 0;} // main

標籤:java dynamic