Scala 我可以将FieldValue转换为蛋白石中的DomainValue吗?

Scala 我可以将FieldValue转换为蛋白石中的DomainValue吗?,scala,static-analysis,opal-framework,Scala,Static Analysis,Opal Framework,我正在使用OPAL框架编写一个静态分析 因此,我调用了一个方法的抽象解释,其中作为FieldType传递的参数具有类型上限 看起来是这样的: BaseAI.perform(classFile, caller, domain)(parameters) 其中参数为IndexedSeq[FieldType] 这将导致以下类型错误: 类型失配;找到:scala.collection.immutable.IndexedSeq[org.opalj.br.FieldType]必需:选项[scala.coll

我正在使用OPAL框架编写一个静态分析

因此,我调用了一个方法的抽象解释,其中作为FieldType传递的参数具有类型上限

看起来是这样的:

BaseAI.perform(classFile, caller, domain)(parameters)
其中参数为IndexedSeq[FieldType]

这将导致以下类型错误:

类型失配;找到:scala.collection.immutable.IndexedSeq[org.opalj.br.FieldType]必需:选项[scala.collection.IndexedSeq[domain.DomainValue]](扩展为)选项[scala.collection.IndexedSeq[domain.Value]]

是否有可能将我的FieldType转换为DomainValue

我能用吗

domain.ClassValue(origin, identifiedFieldType)
转换它,即使类型是int?(因为int不是一个类)

如果是,是否有计算方法参数原始索引的方法?

问题的第一部分: 您可以使用:

domain.TypedValue(origin, parameterType) 
在这种情况下,parameterType可以是“任意类型”

问题第二部分: 包对象org.opalj.ai定义的以下函数可用于计算正确的值索引

def parameterToValueIndex(
    isStaticMethod: Boolean,
    descriptor:     MethodDescriptor,
    parameterIndex: Int
): Int = {