Java负数实例

Java负数实例,java,numbers,negative-number,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<>();

我有一门课是这样的:

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];

    }
}

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

对于您的代码,您依赖于装箱/取消装箱。并非所有数字类都支持这一点,例如BigInteger


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

对于代码,您依赖于装箱/取消装箱。并非所有数字类都支持这一点,例如BigInteger

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

基本上,Number没有任何类型的“给我负值”运算——这就是您想要的

您可以编写自己的方法,该方法对您感兴趣的每种数字都进行了特殊处理,但不能只使用-运算符。该方法将非常难看,并且不能证明类型安全。这可能就是你所拥有的一切。

基本上,数字没有任何形式的给我负值运算——这就是你想要的


您可以编写自己的方法,该方法对您感兴趣的每种数字都进行了特殊处理,但不能只使用-运算符。该方法将非常难看,并且不能证明类型安全。这可能是您的全部功能。

BigDecimal也是一个数字,但不支持取消装箱…BigDecimal也是一个数字,但不支持取消装箱…不,这是不允许的,即使数字仅支持字节、整数和长字符(例如)。数字根本不支持-运算符,也没有从数字到任何特定数字类型的隐式转换。这是胡说八道。问题与装箱/拆箱无关。此外,取消绑定数字是不可能的,因为编译器不知道要将其取消绑定到什么类型,因为数字是一个抽象类。不,这是不允许的,即使数字只支持字节、整数和Long(例如)。数字根本不支持-运算符,也没有从数字到任何特定数字类型的隐式转换。这是胡说八道。问题与装箱/拆箱无关。此外,取消绑定数字是不可能的,因为编译器不知道将其取消绑定到什么类型,因为数字是一个抽象类。
bad operand type E for unary operator '-'
where E is a type-variable:
E extends Number declared in class SpiralGenerator