Configuration 如何使用BND为配置创建默认布尔值
我使用BND注释来帮助创建由OSGiCM管理的配置 这是我的简单配置Configuration 如何使用BND为配置创建默认布尔值,configuration,boolean,osgi,bnd,Configuration,Boolean,Osgi,Bnd,我使用BND注释来帮助创建由OSGiCM管理的配置 这是我的简单配置 @Meta.AD(required = false, type = Type.Boolean, deflt = "false") boolean enabled(); 我已经多次使用BND配置注释库,但这是我第一次使用布尔类型 我已经通读了 为了方便起见,它还讨论了整数或其他基于数字的布尔运算。问题是deflt方法总是返回一个字符串值,如果我的类型是一个整数,我将执行“2”(这些是解析的)。但是在这个赋值点之前,布尔值在可配
@Meta.AD(required = false, type = Type.Boolean, deflt = "false")
boolean enabled();
我已经多次使用BND配置注释库,但这是我第一次使用布尔类型
我已经通读了
为了方便起见,它还讨论了整数或其他基于数字的布尔运算。问题是deflt方法总是返回一个字符串值,如果我的类型是一个整数,我将执行“2”(这些是解析的)。但是在这个赋值点之前,布尔值在可配置的BND代码中似乎没有被解析
if (resultType == boolean.class || resultType == Boolean.class) {
if ( actualType == boolean.class || actualType == Boolean.class)
return o;
if (Number.class.isAssignableFrom(actualType)) {
double b = ((Number) o).doubleValue();
if (b == 0)
return false;
else
return true;
}
return true;
我想进一步了解,当deflt值从未被解析时,为什么会返回true。我希望这会更接近规范并返回false,因为cm会尝试执行Boolean.parseFrom,所以任何不“true”的等于ignore的大小写都是false
所有这些都不是完全的失败,因为如果我通过cm更改值,它在设置为true后正确工作,然后再次设置为false,但显然这只是想知道它是否会工作
简单地说,我想知道是否有人知道如何使用BND的配置注释设置布尔默认值
谢谢我看不出这有什么明显的问题。我通常不会费心将
type=…
属性添加到注释中,因为类型已经由方法的返回类型明确定义。你能试着删除这个属性吗?我在没有这个属性的情况下试过,但没有做任何更改。这可能是一个错误,请报告这个问题。谢谢你,彼得,这是问题316。非常感谢。