Как я могу передать значения перечисления в качестве аргумента для вызова в codemodel? - PullRequest
0 голосов
/ 31 мая 2019

Я пытаюсь создать 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 не создает оператор импорта для этого. Я должен поставить это вручную. Есть ли другой способ использовать перечисляемые значения и передавать в качестве аргументов?

1 Ответ

0 голосов
/ 04 июня 2019

Нашел решение для этого.Мы можем сделать это, используя 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()));
...