2016-06-24 8 views
0

ですが、私は、ドメイン次のように値を作成します上位型バインドまたは正確な実行時型。しかし、私はこの情報をそれぞれのDomainValueに渡す方法を知らない。は私のOPAL-分析ではOPAL

Iは、Javaメソッドの抽象解釈を実行するBaseAI.perform方法にこれらDomainValuesを渡す:

BaseAI.perform(classFile, caller, domain)(Some(parameters)) 

DomainValuesがパラメータ値に含まれています。

私のパラメータの中には正確なランタイム型のものがありますが、他のいくつかのパラメータは上限型の境界にすぎません。

答えて

1

org.opalj.ai.ReferenceValuesFactoryで定義されたファクトリメソッド(は常に)を使用すると、必要なプロパティを持つ値を作成できます。例えば。 InitializedObjectValueを使用すると、タイプが正確であると想定されるDomainValueが作成されます。ファクトリメソッド:ReferenceValueを使用すると、指定された型は上限型の境界として扱われます。

def ObjectValue(
    origin:   ValueOrigin, 
    isNull:   Answer, 
    isPrecise:   Boolean, 
    theUpperTypeBound: ObjectType, 
    t:     Timestamp 
): SObjectValue 

あなたが完全に制御できます。また、org.opalj.ai.l1.DefaultReferenceValuesBindingは、一般的なファクトリメソッドを定義します。

+0

ありがとうございます。 私はいくつかの上の型の境界と同様、いくつかの正確な型を持っているので、私は柔軟なObjectValueメソッドを使用しました。 しかし、新しいドメインを定義する必要がありました。このドメインは、保護されていると宣言されているため、このメソッドをパブリックにアクセスできるようにしました。 – mariotrageser

関連する問題