我天真地创建了一个使用java.util.BitSet
作为QueryParameter
的restful处理程序。
@QueryParam("selectedCodes") BitSet selectedCodes
我想我不应该对我收到以下错误感到惊讶:
Unable to find a constructor that
takes a String param or a valueOf() or fromString() method ...
我真的想将参数表示为BitSet
。是否有任何方便,花花公子(还有什么?)代码串BitSet
?
答案 0 :(得分:1)
您应该自己实现缺失的方法。这应该是微不足道的:
class MyBitSet extends BitSet{
public MyBitSet(String bits) throws IllegalArgumentException
{
super(bits.length());
for(int i = 0; i < bits.length(); i++){
if(bits.charAt(i) > '1' || bits.charAt(i) < '0') {
throw new IllegalArgumentException("Wrong bit!");
}
if(bits.charAt(i) == '1'){
this.flip(bits.length() - 1 - i);
}
}
}
}
我没有测试过代码,但是我更容易以这种方式呈现这个想法。
答案 1 :(得分:0)
BitSet#toString()
生成一个{n, m, ...}
形式的字符串,其中的数字是集合中一位的索引。
如果那不符合您的要求,您将不得不写一个,这应该非常简单。您只需要为您的应用程序定义“字符串化BitSet”意味着什么。
有几种方法可以解决这个问题,但问题归结为决定如何对这些位进行编码。你有几个选择
toString()
仅适用于相对较短或非常稀疏的长位集。您的选择