java dynamic

作者:原创时间:2022-03-30
文档

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

以上就是小编今天的分享了,希望可以帮助到大家。

显示全文
java flume java ear java foreach循环 java fork java ecc加密 java formatter java echarts java ehcache java email java empty java encapsulation java future java generator java enhancer java generic java enterprise java environment java epoll java error java escape java dto java drools java flink java dowhile java flatmap java findfirst java fileinputstream java file.exists() java dockerfile java field获取值 java field java divide java feign java fastjson java dict java development java fastdfs java dev java dependency java调用asmx接口