如何将枚举值作为参数传递给代码模型中的调用?

时间:2019-05-31 08:38:16

标签: 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不会为此创建一个import语句。我必须手动输入。还有其他方法可以使用枚举值并将其作为参数传递吗?

1 个答案:

答案 0 :(得分:0)

找到了解决方案。我们可以使用JClass的all_options = { 'America': { 'New York': ['Statue of Liberty', 'Empire State Building'], 'San Francisco': ['Golden Gate Bridge', 'Mission District'], }, 'Canada': { u'Montréal': ['Biodome', 'Parc Laurier'], 'Toronto': ['CN Tower', 'Royal Ontario Museum'], } } 方法来做到这一点。这将自动导入import语句。

staticRef