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