各类语言泛型实现方式

1、C
通过void*和强制类型转换来实现,也可以通过宏来实现类似功能,一般只会用作简单的实现

2、C++
模板类的模板具体化,预编译时生成不同的类,分别进行编译,会造成代码膨胀。
但由于不需要在运行时进行任何的类型识别,程序也会变得比较干净,运行效率也更高。

3、JAVA
基于类型擦除,在编译泛型类时将强制消除类型信息;
JVM运行时泛型类并不知道自己处理的具体是何种类型。

4、Go
当前版本不支持泛型,可以通过 interface{}强制转换实现泛型。
也可以通过第三方库,实现模板库类型的泛型。

5、C#
泛型类在编译生成中间码IL时,通用类型T只是一个占位符。
在实例化类时,根据实际数据类型代替T并由即时编译器(JIT)生成本地代码运行,不同封闭类的本地代码是不一样的。

6、JS、Python
动态类型天然支持泛型

跨语言翻译

1、Java翻译为JS

1.1、GWT
通过Eclipse+GWT插件,进行界面设计,界面响应方法与AWT类似。开否人员可以用JavaGUI设计的方式进行复杂界面开否,然后翻译为H5+JS的页面。

1.2、RAP/RWT
通过Eclipse SWT方式来进行界面开发,通过RAP/RWT将页面翻译为H5+JS的页面。可以通过相对可控的代价,将原来CS架构的SWT项目,转换为Web架构。问题也是一样的,就是全部的修改,要从CS架构改起。

2、wrapper
2.1、swig
可以将c/c++项目进行包装,支持Java, JS, GO, C#, Perl, PHP, Python, Ruby, Lua, R, Android等多种语言调用。