Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/hibernate/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Configuration 如何使用BND为配置创建默认布尔值_Configuration_Boolean_Osgi_Bnd - Fatal编程技术网

Configuration 如何使用BND为配置创建默认布尔值

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”(这些是解析的)。但是在这个赋值点之前,布尔值在可配

我使用BND注释来帮助创建由OSGiCM管理的配置

这是我的简单配置

@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。非常感谢。