
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以上就是小编今天的分享了,希望可以帮助到大家。
