关闭→
当前位置:科普经验站>IT科技>dynamic java

dynamic java

科普经验站 人气:2.4W

<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

TAG标签:#dynamic #java #