测试是否在规则左侧的BitSet中设置了位

时间:2012-01-04 16:56:53

标签: java drools

我有一个BitSet的成员,在给定的规则中,我想测试是否设置了某个位,例如:

class Foo
{
  BitSet bar;
  // getter & setter
}

我想要的规则:

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

这可能吗?

2 个答案:

答案 0 :(得分:1)

根据文档

Foo(bar.get(3))

是一种有效的方法。

Drools doc

答案 1 :(得分: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) );

打印“true”,因为十进制10的BitSet产生二进制1010,第四位(从右读,零索引)为1,所以是真的。

您应该能够将其转换为算法。