GWT中JSNI调用Java方法的Type Signatures详解
需积分: 10 92 浏览量
更新于2025-01-02
收藏 75KB PDF 举报
"JSNI (Java to JavaScript Native Interface) 是 GWT (Google Web Toolkit) 中的一个特性,允许JavaScript代码直接调用Java方法。在使用JSNI进行Java方法调用时,需要正确地指定类型签名(Type Signatures),这是为了在动态类型的JavaScript和静态类型的Java之间进行类型转换的关键。类型签名是Java虚拟机(JVM)用来表示方法和类型的字符串表示形式,它确保了在Java和JavaScript之间数据类型的兼容性。"
在Java中,每种数据类型都有其对应的类型签名,如表所示:
- `Z` 对应 `boolean`
- `B` 对应 `byte`
- `C` 对应 `char`
- `S` 对应 `short`
- `I` 对应 `int`
- `J` 对应 `long`
- `F` 对应 `float`
- `D` 对应 `double`
- `Lfully-qualified-class;` 对应引用类型(类或接口),如 `Ljava/lang/String;` 对应 `String`
- `[type` 对应数组类型,如 `[I` 对应 `int[]`
例如,Java方法 `long f(int n, String s, int[] arr);` 的类型签名是 `(ILjava/lang/String;[I)J`。这个签名按照以下规则构成:
- 开括号`(`开始,按参数类型顺序列出参数的类型签名。
- 参数列表结束后,闭括号`)`关闭,然后是返回值类型签名。
在GWT环境中,通过JSNI调用Java方法时,需要遵循这种类型签名的规则来定义函数指针,确保参数和返回值的类型匹配。例如,如果要从JavaScript调用上面的 `f` 方法,可能会这样写:
```javascript
var myInstance = $wnd.myJavaClass.getInstance();
myInstance.f(123, "example", [4, 5, 6]);
```
这里 `$wnd` 是一个全局对象,代表浏览器的 `window` 对象,`myJavaClass.getInstance()` 返回一个Java实例,而 `f` 是一个JSNI方法,接受一个整数、一个字符串和一个整数数组作为参数,并返回一个长整数。
在编写JSNI代码时,使用GWT的Web模式运行可以帮助进行调试,因为GWT会将Java代码编译为优化过的JavaScript,而在Web模式下,可以更容易地跟踪和理解JavaScript与Java之间的交互。
总结来说,JSNI中的类型签名是连接JavaScript和Java的重要桥梁,它们定义了方法的参数类型和返回类型,确保在两种不同类型的环境中数据类型的正确传递。理解并正确使用这些签名对于有效地利用GWT的JSNI功能至关重要。
点击了解资源详情
111 浏览量
301 浏览量
2021-07-02 上传
2008-08-02 上传
2021-05-20 上传
169 浏览量
点击了解资源详情
点击了解资源详情
HiSpring
- 粉丝: 3
- 资源: 3
最新资源
- C#调用AForge控制USB摄像头进行拍照录像
- cucumber-step-generator:Atom软件包,用于从特征文件生成Cucumber步骤文件
- JS响应式3D照片墙展示特效.zip
- leetcode耗时-starting-in-ds-advice:开始在ds建议
- 土拨鼠
- 财务报告编制准备管理制度DOC
- caffe-d.zip
- teenchoice
- write.github.io
- acid:ACID是算法创建图像数据的缩写,是一种简单的通用视频合成器,用于创建实时图像以及计算机生成的图像和动画。 它的工作原理与模拟合成器类似,但其中包含一些Photoshop
- find-bicycle-frontend:客户端部分,如果查找自行车应用程序
- 定制应用程序仪表板:homepage
- leetcode耗时-30_projects:30_projects
- 日期与时间c++.zip
- phoenix-react-apollo-demo:将Phoenix框架与React和GraphQL结合使用的示例应用程序
- MakersBnB