这不是重复的!字面上的问题确实如此 之前问过,但问题都没有同样的意图(专注于 int和Integer以及弃用)答案也回答了我的意思 寻找。
我通过StackOverflow看了很多。我一遍又一遍地看到同样的问题和答案,但他们没有解决真正的问题。
有Java。 Java有ArrayList
。 ArrayList
的方法为remove()
。
JDK9文档说它可以将索引作为参数或要删除的对象本身。
以下代码不起作用。
import java.util.*;
public class Tea {
public static void main (String[] args) {
ArrayList<Integer> myList = new ArrayList<Integer>();
myList.add(69);
myList.remove( ( (int) 69 ) );
System.out.println(myList);
}
}
它编译,但它不运行,因此它给出以下错误消息:
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index 69 out-of-bounds for length 1
at java.base/jdk.internal.util.Preconditions.outOfBounds(Preconditions.java:64)
at java.base/jdk.internal.util.Preconditions.outOfBoundsCheckIndex(Preconditions.java:70)
at java.base/jdk.internal.util.Preconditions.checkIndex(Preconditions.java:248)
at java.base/java.util.Objects.checkIndex(Objects.java:372)
at java.base/java.util.ArrayList.remove(ArrayList.java:517)
at Tea.main(Tea.java:10)
JVM显然将参数作为索引而不是对象。 以下是在其他网站上找到的建议解决方案:
myList.remove(new Integer(69));
它甚至无法编译成字节码:
Note: Tea.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
编译:
$javac Tea.java -Xlint:deprecation
给我们:
warning: [deprecation] Integer(int) in Integer has been deprecated
myList.remove(new Integer(69));
我查看了文档中已弃用的列表。无法找到它。 查看方法的文档,向我解释。没有解释。
我想要做的就是使用参数作为对象而不是索引,并将我的返回作为布尔值(文档说明),如果它在ArrayList
中并且已被删除。
有办法做到这一点吗?或者是否已弃用,我的 Ctrl + F 搜索已弃用的方法还不够?
答案 0 :(得分:0)
使用Integer
演员而不是int
:
boolean success = myList.remove((Integer) 69);