2012-01-04 60 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

相关问题