Проверьте, установлен ли бит в BitSet в левой части правила - PullRequest
2 голосов
/ 04 января 2012

У меня есть член, который является BitSet, и в данном правиле я хотел бы проверить, установлен ли определенный бит, например:

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

Мое правило, которое я хотел бы:

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

Возможно ли это?

Ответы [ 2 ]

1 голос
/ 05 января 2012

По документам

Foo(bar.get(3))

будет правильным способом сделать это.

Слюни документ

0 голосов
/ 04 января 2012

Примерно так работает:

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», так как BitSet для десятичной 10 приводит к двоичному 1010, 4-й бит (чтение справа, индексированный ноль) равен 1, поэтому true.

Вы должны иметь возможность перенести это в свой алгоритм.

...