2012-01-04 61 views
2

我有一個BitSet的成員,並且在給定的規則中,我想測試是否設置了某個特定位:測試一個規則左邊的BitSet是否設置了一個位

,我想
class Foo 
{ 
    BitSet bar; 
    // getter & setter 
} 

我的規則:

rule "Test Bitset" 
    when 
    $f : Foo(bar ???) <-- what does this look like? 
    then 
    // do something 
end 

這可能嗎?

+1

你試過'$ f:Foo(bar get 3)嗎? – Vlad 2012-01-04 18:00:38

+0

@Vlad,這是什麼'get'?無論如何 - 它不會編譯。 (我知道'get()'是'BitSet'的成員,但在Drools中沒有關鍵字'get' AFAIK) – Nim 2012-01-04 18:15:07

+0

抱歉,我不熟悉Drools語法,我只是假設它可以類推'contains' 。因此評論說,沒有回答。 – Vlad 2012-01-04 19:54:53

回答

1

按照文檔

Foo(bar.get(3)) 

是做一個有效的途徑。

Drools doc

0

事情是這樣工作的:

BitSet bitSet = new BitSet(); 
bitSet.set(3); 
bitSet.set(1); 

int index = 3; 
Foo foo = new Foo(); 
foo.setBar(bitSet); 

BitSet bits = foo.getBar(); 
System.out.print(bits.get(index)); 

,打印「真」的位集合十進制10個結果中的二進制1010,第四位(右讀,零索引)爲1,那麼的真實。

您應該可以將其轉換爲您的算法。

+0

問題的關鍵是,在Drools中測試一下是什麼語法,而不是'BitSet'在Java中的工作方式! – Nim 2012-01-04 18:13:37

相關問題