JAVA中如何调用LIST接口的REMOVE重载方法-古蔺大橙子建站
RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:8:30-17:00
你可能遇到了下面的问题
关闭右侧工具栏

新闻中心

这里有您想知道的互联网营销解决方案
JAVA中如何调用LIST接口的REMOVE重载方法

这篇文章给大家分享的是有关JAVA中如何调用LIST接口的REMOVE重载方法的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

成都创新互联公司专注于东营企业网站建设,响应式网站设计,成都商城网站开发。东营网站建设公司,为东营等地区提供建站服务。全流程按需制作,专业设计,全程项目跟踪,成都创新互联公司专业和态度为您提供的服务

测试类设计

测试类一

public class Text {

 public void remove(int index){
  System.out.println("调用传参为int的remove方法");
 }

 public void remove(Integer object){
  System.out.println("调用传参为Integer的remove方法");
 }

 public void remove(Object object){
  System.out.println("调用传参为Object的remove方法");
 }
}

测试类二

public class Text {
 
 public void remove(Integer object){
  System.out.println("调用传参为Integer的remove方法");
 }

 public void remove(Object object){
  System.out.println("调用传参为Object的remove方法");
 }
}

测试类三

public class Text {

 public void remove(Object object){
  System.out.println("调用传参为Object的remove方法");
 }
}

结果

三个测试类分别传入int,Integer,Object型变量,观察效果。

测试类一

  • 传入类型为int:调用传参为int的remove方法

  • 传入类型为Integer:调用传参为Integer的remove方法

  • 传入类型为Object:调用传参为Object的remove方法

测试类二

  • 传入类型为int:调用传参为Integer的remove方法

  • 传入类型为Integer:调用传参为Integer的remove方法

  • 传入类型为Object:调用传参为Object的remove方法

测试类三

  • 传入类型为int:调用传参为Object的remove方法

  • 传入类型为Integer:调用传参为Object的remove方法

  • 传入类型为Object:调用传参为Object的remove方法

从输出结果可以看出,当方法的传参的类层级逐渐变高时,层级较低的传参会进行向上转型适应传参的需要。

原因分析

下面我们先反编译各测试类的源码,结果如下

测试类一

invokevirtual #11 // Method remove:(I)V

invokevirtual #15 // Method remove:(Ljava/lang/Integer;)V

invokevirtual #18 // Method remove:(Ljava/lang/Object;)V

测试类二

invokevirtual #11 // Method remove:(Ljava/lang/Integer;)V

invokevirtual #11 // Method remove:(Ljava/lang/Integer;)V

invokevirtual #17 // Method remove:(Ljava/lang/Object;)V

测试类三

invokevirtual #10 // Method remove:(Ljava/lang/Object;)V

invokevirtual #10 // Method remove:(Ljava/lang/Object;)V

invokevirtual #10 // Method remove:(Ljava/lang/Object;)V

可以看出,反编译代码中都是调用实例方法的命令,所以结果中自动"向上转型"其实是jvm的功劳。jvm通过在编译时确定调用的传参类型,静态分派到具体方法的。

所以在前言中的困惑已经解除了,就是由于jvm中静态分派的实现,调用次序是int->Integer->Object。

感谢各位的阅读!关于“JAVA中如何调用LIST接口的REMOVE重载方法”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!


新闻标题:JAVA中如何调用LIST接口的REMOVE重载方法
网站路径:http://scgulin.cn/article/pchshd.html