0
public static boolean isNoPositive(long number) {
    return number <= 0;
}; 

public static boolean isNoPositive(float number) {
    return number <= 0;
 };

すべてのプライマリタイプが追加されたら、同様のメソッドを1つ追加する必要があります。メソッドをオーバーロードします。しかし、基本クラスを使用した場合:Number。> 0メソッドはありませんが、。のみがありintValue()ます。floatValue()、等。

では、過負荷を回避するために何ができるでしょうか?

4

1 に答える 1

0

次のようなことを試すことができます:

public boolean isNotPositive(Number val) {
    return val.longValue() <= 0 && val.doubleValue() <= 0;
}

ただし、すべての可能性を列挙する必要があります。 short と int は long のスコープでカバーされ、float は double のスコープでカバーされるため、long 値または double 値をテストするだけで済みます。もっと洗練された解決策があるかもしれませんが、いくつかのテストでは失敗していません。

編集:したがって、元のブール OR は、0.1それを通過したときに失敗しました。代わりにブールANDに変更しましたが、結果は本来あるべきものと一致しています。long 型と double 型の両方で符号ビットが同じ場所にあるために機能します。

于 2012-07-02T02:25:59.163 に答える