Java负数的实例

时间:2013-08-06 07:46:29

标签: java numbers negative-number

我有一个这样的课程:

public class SpiralGenerator<E extends Number> implements Iterator<List<E>> {
    private void generate(int pos, E... array) {
        if (pos == array.length) {
            List<E> list = new ArrayList<>();
            list.addAll(Arrays.asList(array));
            currentResults.add(list);
            return;
        }
        generate(pos + 1, array);
        array[pos] = -array[pos];

    }
}

然而,它不允许array[pos] = -array[pos]。如果我使用Integer代替E extends Number,则可以正常使用。

错误讯息:

bad operand type E for unary operator '-'
where E is a type-variable:
E extends Number declared in class SpiralGenerator

为什么当前的方法不起作用,我该如何解决?

2 个答案:

答案 0 :(得分:4)

基本上,Number没有任何“给我负面价值”的操作 - 这就是你想要的。

您可以编写自己的方法,这种方法特别包含您感兴趣的各种数字 - 但您不能只使用-运算符。该方法非常难看,并且不具有证明类型安全性。它可能就是你所拥有的一切。

答案 1 :(得分:2)

使用你的代码,你依靠拳击/拆箱。所有Number类都不支持此功能(例如BigInteger)。

因此编译器不允许这样做。