sun-codemodel - 如何将枚举值作为参数传递给代码模型中的调用?
问题描述
我正在尝试创建一个 JInvocation,例如:-
driver.manage().timeouts().implicitlyWait(10L, (TimeUnit.SECONDS));
这是我用来生成相同的代码块:-
public static JInvocation implicitWait(JVar driverJVar, Long implicitWaitTime, TimeUnit timeUnit) {
JClass timeUnitType = (JClass) BasicUtility.getReferenceForClass(TimeUnit.class);
JExpression jExpression = JExpr.direct(timeUnitType.name().concat(".").concat(timeUnit.name()));
return driverJVar.invoke("manage").invoke("timeouts").invoke("implicitlyWait").arg(JExpr.lit(implicitWaitTime)).arg(jExpression);
}
这很完美,唯一的问题是 TimeUnit 没有为此创建导入语句。我必须手动放置。有没有其他方法可以使用枚举值并作为参数传递?
解决方案
找到了解决方案。我们可以使用staticRef
JClass 的方法来做到这一点。这将自动带来导入语句。
JClass timeUnitType = (JClass) CodeModelUtility.getReferenceForClass(TimeUnit.class);
return driverJVar.invoke("manage").invoke("timeouts").invoke("implicitlyWait").arg(JExpr.lit(implicitWaitTime)).arg(timeUnitType.staticRef(timeUnit.name()));
推荐阅读
- java - Jersey 如何知道为带有 @Context 注释的类字段注入哪个 Provider?
- python - (单工)UWSGI 线程应该等于 Flask app.py 中的线程吗?
- javascript - 使用引导反应组件与引导类名称之间有区别吗?
- html - 执行处理程序“System.Web.Mvc.HttpHandlerUtil+ServerExecuteHttpHandlerAsyncWrapper”的子请求时出错。在其他视图中渲染视图时发生
- cognos - 与非用户共享 Cognos 报告
- postgresql - 如何按一列获取唯一行但按第二个排序
- swift - 为什么我会在这里丢失数据?(SwiftUI)
- java - @RequestMapping 的问题
- javascript - this.activatedRoute.queryParamMap.pipe 中的单元测试茉莉花错误
- go - 如何在go html模板中连接href