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>。

  • 相关阅读:
    linux read 系统调用剖析
    IO流程及优化
    分布式存储比较
    BTree,B-Tree,B+Tree,B*Tree的数据结构
    Spectrum Scale
    unixbench测试
    网络文件系统与 Linux
    协程的实现
    进程池和线程池
    django-spirt 论坛主题
  • 原文地址:https://www.cnblogs.com/GoQC/p/5750300.html
Copyright © 2011-2022 走看看