Java 关于版本的收集方法>=爪哇5

Java 关于版本的收集方法>=爪哇5,java,autoboxing,Java,Autoboxing,我有一个疑问,想知道JRE可能使用了哪种类方法来删除下面代码中的对象。因为remove有两个签名remove(int)和remove(Object)。作为自动装箱功能的一部分,在将int添加到集合时,这里int将被视为整数。在这种情况下,哪个remove方法将获得更高的优先级,为什么?请分享原因 Vector v=new Vector(); for(int i=0;i<10;i++) { v.add(i); }

我有一个疑问,想知道JRE可能使用了哪种类方法来删除下面代码中的对象。因为remove有两个签名remove(int)和remove(Object)。作为自动装箱功能的一部分,在将int添加到集合时,这里int将被视为整数。在这种情况下,哪个remove方法将获得更高的优先级,为什么?请分享原因

    Vector v=new Vector();
    for(int i=0;i<10;i++)
    {
        v.add(i);           
    }       
    v.remove(5); 
    System.err.println(v);
Vector v=new Vector();
对于(inti=0;i它拾取索引1

package com.jigar.stackoverflow.question.java;

public class VectorAutoBox {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.add(1);
        vector.add(5);
        vector.add(2);
        vector.add(3);
        vector.add(4);
        vector.add(6);
        System.out.println(vector);
        vector.remove(5);
        System.out.println(vector);
    }
}
输出

[1, 5, 2, 3, 4, 6]
[1, 5, 2, 3, 4]

在不构造Integer类实例的情况下,参数是int,Vector方法可以直接处理它,而无需自动装箱。编译器使用中详述的最简单方法

此版本删除第二个整数(index=1),因为它显式是一个整数:

import java.util.Vector;

public class VectorAutoBox {
    public static void main(String[] args) {
        Vector vector = new Vector();
        vector.add(1);
        vector.add(5);
        vector.add(2);
        vector.add(3);
        vector.add(4);
        vector.add(6);
        System.out.println(vector);
        vector.remove( new Integer( 5 )); // case 1
//      vector.remove( 5 );               // case 2
        System.out.println(vector);
    }
}
案例1的产出:

[1, 5, 2, 3, 4, 6]
[1, 2, 3, 4, 6]      value '5' at index 1 removed
案例2的产出:

[1, 5, 2, 3, 4, 6]
[1, 5, 2, 3, 4]      value '6' at index 5 removed

确定哪些方法适用的规则详见。实质上,不需要装箱/拆箱的方法优先于需要装箱/拆箱操作的方法:

  • 第一阶段(§15.12.2.2)执行重载解析,不允许装箱或拆箱转换,也不允许使用变量arity方法调用。如果在此阶段未找到适用的方法,则处理继续到第二阶段
  • 第二阶段(§15.12.2.3)在允许装箱和拆箱的同时执行重载解析,但仍然禁止使用变量arity方法调用
因此,在编写
remove(5);
时,会调用
remove(int)


请注意,Vector在大多数情况下都是过时的。

您可以通过填充Vector来验证,这样做如何证明使用了哪种方法?@kevin it在第5页删除了该项index@Jigar乔希啊!真聪明。