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