静态类型和动态类型各有长短,为何不让这2者兼得呢?
比如一段代码:
String str = "Hello, World";
dynamic str1 = str.substring(7);
dynamic str2 = str1.toLowerCase();
dynamic str3 = str2.toUpperCase();
只需要一个关键字表明它是一个动态类型,并给它加上一个wrapper类,然后把方法调用扩展成一个send方法,我假想的编译器展开后结果是这样的:
String str = "Hello, World";
Dynamic str1 = new Dynamic(str.substring(7);
Dynamic str2 = new Dynamic(str1.send("toLowerCase"));
Dynamic str3 = new Dynamic(str2.send("toUpperCase"));
剩下的工作好办了,只要支持反射的语言都可以完成。
完整测试代码:
class Dynamic{
private Object object;
public Dynamic(Object object){
this.object = object;
}
public Object send(String methodName, Object ... args) throws SecurityException, NoSuchMethodException, IllegalArgumentException, IllegalAccessException, InvocationTargetException{
Class[] classes = new Class[args.length];
for(int i=0; i<args.length; ++i)
classes[i] = args[i].getClass();
Method method = object.getClass().getMethod(methodName, classes);
return method.invoke(object, args);
}
public String toString(){
return object.toString();
}
}
public class Test {
public static void main(String[] args) throws SecurityException, IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException {
String str = "Hello, World!";
Dynamic str1 = new Dynamic(str.substring(7)); // dynamic str1 = str.substring(7);
System.out.println(str1);
Dynamic str2 = new Dynamic(str1.send("toLowerCase")); // dynamic str2 = str1.toLowerCase();
System.out.println(str2);
Dynamic str3 = new Dynamic(str2.send("toUpperCase")); // dynamic str3 = str2.toUpperCase();
System.out.println(str3);
}
}
分享到:
相关推荐
四年级作文动静结合写景片段训练
写作手法——动静结合[汇编].pdf
基于深度学习的动静结合的漏洞挖掘方法.pdf
实现在对话框中进行图形的绘制,讲解的比较详细,而且其中还有截图。
诗歌鉴赏中的虚实结合、动静结合.docx
写作手法——动静结合.doc
单片机数码管动静结合显示,前7位静态显示,最后一位动态显示数字
1.nginx动静分离 ????1.1) 什么是动静分离 ????1.2) 动静分离实现原理 ????1.3) Nginx+Tomcat模拟动静分离效果 ????1.4) 集群环境动静分离效果模拟 2.nginx+python? ????2.1) wsgi、uwsgi协议 ????2.2) uwsgi为什么...
提出了一种动静结合的网络数据检测方法,在传统静态分析的基础上优化了检测算法,同时引入了动态模拟运行的检测方式;通过动静结合的双重检测提高了恶意代码的识别率,并能够在代码传入实际被保护程序运行前检测并...
动静结合的二阶SQL注入漏洞检测技术.pdf
一种基于Java虚拟机的动静结合自适应优化方法
一种基于Java虚拟机的动静结合自适应优化方法.pdf
一种动静结合的高代码覆盖率模糊测试方法 内网渗透
片上多核处理器共享末级缓存动静结合地址映射机制.pdf
动静结合的循环结构选路方法,朱前超,张旭舟,面向路径的单元测试中,路径选择是重要的基础步骤。传统的静态选路过程中,循环结构的存在会导致生成大量的路径,其中大部分路径
近年来光驱不断提速,从16X、18X到20X,刻一张盘片所需的时间越来越少。在带给用户快捷速度的同时,有的光驱还带来了噪音的烦恼。光驱工作时为什么会有声音?多少分贝的声音适宜于人类生活与工作?...
针对同家族恶意软件行为具有相似性的特点进行研究,提出通过静态分析与动态运行程序相结合的方式度量软件行为的相似性。通过反编译和soot代码转换框架获取程序控制流图,利用行为子图匹配算法从静态方面对程序行为...
Nginx Tomcat实现动静分离 就目前来说是Nginx结合Tomcat 比较好的一篇负载均衡应用文档
WAS7 ND+IHS性能调优出现的相关问题解决办法(2):WAS7集群上传下载问题分析及动静分离
理论研究了动载与静载叠加诱发冲击矿压的能量和应力条件,系统地提出了动静载叠加诱发冲击矿压的原理,并分析了煤矿动静载特征,根据应变率对煤矿载荷状态进行了界定,试验研究了煤岩力学特性与应变率的关系以及动静叠加...