OSGI cm によって管理される構成の作成を支援するために、BND 注釈を使用しています。
ここに私の簡単な設定があります
@Meta.AD(required = false, type = Type.Boolean, deflt = "false")
boolean enabled();
BND 構成アノテーション ライブラリは何度も使用していますが、boolean 型を使用するのはこれが初めてです。
私はこれを読んだ
そして、便宜上、ブール値の整数またはその他の代替数値ベースの処理について説明します。問題は、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 を返す理由をさらに知りたいと思います。cm は Boolean.parseFrom を実行しようとするため、これが仕様に厳密に従い、false を返すことを期待していました。
cmで値を変更すると、trueに設定してから再びfalseに設定すると正しく機能するため、これはすべて完全な失敗ではありませんが、明らかにそれが機能するかどうか疑問に思っているだけです。
BNDの構成注釈を使用してBOOLEANのデフォルト値を設定する方法を誰かが知っているかどうかを知りたいだけです。
ありがとう