com.google.gwt.user.client.Element弃用:GWT2.8.1+GXT2.2.5代码疑问
关于GWT 2.8.1+GXT 2.2.5中El构造器弃用警告的问题
代码能否正常运行?
当前代码可以正常运行。GWT对已弃用的com.google.gwt.user.client.Element和新的com.google.gwt.dom.client.Element做了底层兼容处理,强制类型转换在运行时不会触发错误。但需注意:弃用警告意味着官方后续版本可能移除该兼容逻辑,不建议长期依赖此写法。
消除弃用警告的解决方案
方案1:使用GXT内置兼容工具类转换
GXT 2.x提供了专门处理新旧Element转换的工具类com.extjs.gxt.ui.client.core.XDOM,通过其方法完成类型转换,避免直接强制转换的警告:
// 先获取新体系的Element com.google.gwt.dom.client.Element domElement = grid.getView().getRow(Model); // 转换为旧体系的Element com.google.gwt.user.client.Element userElement = XDOM.convertToUserElement(domElement); // 构造El实例 El el = new El(userElement);
方案2:通过JSNI实现无警告转换
由于两个Element类本质都是对DOM元素的JavaScript包装,可通过JSNI直接转换,绕过Java编译期的类型检查警告:
// 定义JSNI转换方法 private native com.google.gwt.user.client.Element convertToUserElement(com.google.gwt.dom.client.Element elem) /*-{ return elem; }-*/; // 调用转换并构造El El el = new El(convertToUserElement(grid.getView().getRow(Model)));
方案3:升级GXT版本(长期最优解)
如果项目允许,升级到适配GWT 2.8+的GXT版本(如GXT 3.x及以上),新版本已完全适配GWT的com.google.gwt.dom.client.Element体系,El构造器直接支持传入新类型,从根源上消除警告。但需注意:GXT 2.x到3.x是重大版本迭代,API变动较大,升级需要做兼容性适配。
内容的提问来源于stack exchange,提问作者clorzs
相关产品推荐
相关产品推荐

