我计划创建一个用户配置文件,稍后我将对其进行解析,以便从 Amazon Deequ 运行一些检查。我希望能够从配置文件中传递字符串名称来获取方法;然而,在我尝试这样做的过程中,我不断遇到障碍。
import com.amazon.deequ.checks._
val ru = scala.reflect.runtime.universe
val rm = ru.runtimeMirror(getClass.getClassLoader)
val myClass = new Check(CheckLevel.Error, "unit testing my data")
val im = rm.reflect(myClass)
val methodSymbolNonNeg = ru.typeOf[Check].decl(ru.TermName("isNonNegative")).asMethod
val methodNonNeg = im.reflectMethod(methodSymbolNonNeg)
Name: Compile Error
Message: <console>:48: error: type mismatch;
found : ru.MethodSymbol
required: ru.MethodSymbol
val methodNonNeg = im.reflectMethod(methodSymbolNonNeg)
我已经尝试了文档中的几个示例以及我在 SO 上找到的内容。我还检查了类myClass.getClass.getMethods.map(_.getName).foreach{println}
中以及 Github 上的方法名称。
此外,我也尝试过使用.getClass.getMethod
和调用该方法
val m = myClass.getClass.getMethod("isNonNegative", "".getClass, 2.13.getClass, Option("").getClass)
Name: java.lang.NoSuchMethodException
Message: com.amazon.deequ.checks.Check.isNonNegative(java.lang.String, double, scala.Some)
StackTrace: at java.lang.Class.getMethod(Class.java:1786)