zoukankan      html  css  js  c++  java
  • Java可变长参数方法调用问题

    不说废话,直接上代码:

     1 package mytest;
     2 
     3 import java.util.List;
     4 
     5 public class TestClass {
     6 
     7     public void method(List<Object> list){
     8         System.out.println("method with param List<Object> invoked!");
     9     }
    10     
    11     public void method(Object... objects){
    12         System.out.println("method with param Object... invoked!");
    13     }
    14 }
     1 package mytest;
     2 
     3 import java.util.ArrayList;
     4 import java.util.List;
     5 
     6 public class Main {
     7 
     8     public static void main(String[] args) {
     9         List<String> list = new ArrayList<String>();
    10         list.add("aa");
    11         list.add("bb");
    12         list.add("cc");
    13         
    14         TestClass t = new TestClass();
    15         
    16         t.method(list);
    17     }
    18 
    19 }

    main方法执行结果为:

    method with param Object... invoked!

    为什么重载方法一个参数为List<Object>,一个参数为Object...,调用方法传参类型为List<String>,实际执行的是参数为Object...方法?

    泛型问题,如果注释掉Object...方法,则编译报错,不能将List<String>转换为List<Object>。

  • 相关阅读:
    前端UI框架
    Knowledge
    Microsoft SQL Server
    ASP.NET MVC
    将博客搬至CSDN
    python中的数据类型
    python基础知识
    接口和抽象类的区别
    面向对象的四大特征
    数据结构学习笔记
  • 原文地址:https://www.cnblogs.com/GoQC/p/5750300.html
Copyright © 2011-2022 走看看