Discuss / Java / 不理解这句话

不理解这句话

Topic source

这就是<? extends Number>通配符的一个重要限制:方法参数签名setFirst(? extends Number)无法传递任何Number类型给setFirst(? extends Number)

这句话是什么意思

文中好像说的是无法传递给Number类型的子类

fredld22

#3 Created at ... [Delete] [Delete and Lock User]

Pair<Integer> p = new Pair<>(123, 456);

Pair<double> p = new Pair<>(123.1, 456.1);
......
p.setFirst(new Integer(first.intValue() + 100));
p.setLast(new Integer(last.intValue() + 100));

如上,把pair的T换成double,但setFirst的参数(new Integer(first.intValue() + 100))显然是个Integer,这样就出错了,同理如果setFirst的参数换成其他的类型T1,那么当Pair的T换成与T1不同的类型T2时就出错了(其中T1,T2是? extends Number),所以setFirst传不了任何参数。


  • 1

Reply