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

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

当添加每个主要类型时,我应该添加一个类似的方法:重载方法。但如果我使用基类:Number。没有 > 0 方法,但只有intValue(). floatValue(),ETC。

那么我能做些什么来避免超载呢?

4

1 回答 1

0

你可以尝试这样的事情:

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

不过,您确实必须列举所有可能性。 你可以只测试一个 long 值或 double 值,因为 short 和 int 包含在 long 的范围内,而 float 则包含在 double 的范围内。可能有一个更优雅的解决方案,但对于一些测试,它并没有失败。

编辑:所以原来的布尔值 OR 在0.1通过它时失败了。我将其更改为布尔 AND,结果与应有的结果一致。由于 long 和 double 类型的符号位位于同一位置,因此它起作用。

于 2012-07-02T02:25:59.163 回答