【求助】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...方法?

时间: 2024-10-13 02:34:53

【求助】Java可变长参数方法调用问题的相关文章

Java可变长参数

简单例子1: 1 public class Varable { 2 public static void main(String[] args) { 3 print("I ","love ","you ","!"); 4 } 5 static void print(String... agrc){//可变长参数 6 for(String i:agrc){ //在具有可变长参数的方法中可以把参数当成数组使用. 7 System.

java变长参数

从java5开始提供了变长参数,可以把变长参数当作数据使用 可变长参数方法的定义 使用...表示可变长参数,例如 print(String... args){ ... } 在具有可变长参数的方法中可以把参数当成数组使用,例如可以循环输出所有的参数值. print(String... args){ for(String temp:args) System.out.println(temp); } 可变长参数的方法的调用 调用的时候可以给出任意多个参数,例如: print("hello")

Java中可变长参数的使用及注意事项

在Java5 中提供了变长参数(varargs),也就是在方法定义中可以使用个数不确定的参数,对于同一方法可以使用不同个数的参数调用,例如print("hello");print("hello","lisi");print("hello","张三", "alexia");下面介绍如何定义可变长参数 以及如何使用可变长参数. 1. 可变长参数的定义 使用...表示可变长参数,例如 prin

java中可变长参数

1 ** 2 * Created by Lenovo on 2017/12/10. 3 * java中可变长参数 4 */ 5 public class reflect04 { 6 7 //m1有一个int类型的可比变长参数 8 //m1在调用的时候实参可以是0-N个 9 public static void m1(int... a){ 10 System.out.println("int型可变长参数执行...."+a); 11 } 12 13 //如果有可以精确匹配的方法则调用该方法

方法的可变长参数 传入参数个数不确定可用(Type ... values)

/** * 可变长的参数. * 有时候,我们传入到方法的参数的个数是不固定的,为了解决这个问题,我们一般采用下面的方法: * 1. 重载,多重载几个方法,尽可能的满足参数的个数.显然这不是什么好办法. * 2. 将参数作为一个数组传入.虽然这样我们只需一个方法即可,但是, * 为了传递这个数组,我们需要先声明一个数组,然后将参数一个一个加到数组中. * 现在,我们可以使用可变长参数解决这个问题, * 也就是使用...将参数声明成可变长参数.显然,可变长参数必须是最后一个参数. */ public

C 可变长参数运用-----编写Lua的通用调用函数

1.C可变长参数 printf这个使用频繁的C语言函数的参数列表包含一个const char*的描述串,还有一个可变长参数(...) ,如下为printf的函数声明. int printf(const char * __restrict, ...) 在stdarg.h这个头文件中包含着对可变长参数进行操作的一些宏(x86平台为例): #define va_start(ap,v)( ap = (va_list)&v + _INTSIZEOF(v) ) #define va_arg(ap,t) ( 

函数基础之调用,参数,可变长参数

函数调用 函数名() 函数的参数 形参 描述意义 位置形参 一个一个从左到右 默认形参 默认值,默认形参必须放在位置形参的后面 实参 具有具体的值 位置实参 一个一个从左到右传值给形参 关键字实参 键值对的形式传给形参:关键字实参必须放在位置实参的后面 可变长参数 * *args: 接收多余的位置实参 *(): 打散元组内的元素当做位置实参传给形参 ** **kwargs: 接收多余的关键字实参 **{}:打散字典的元素作为关键字实参传给形参 原文地址:https://www.cnblogs.c

Java 变长参数Varargs

Varargs (variable arguments)可变长参数是Java 1.5引入的特性. 方法的形参如print(String ... s),实参为任意数目的值. public class VarargsDemo{ public static void print(String ... s){ for(String a: s) System.out.print(a); } public static void main(String[] args) { print("a", &

java 变长参数使用原则

1.java变长参数用...表示,如Print(String... args){  ... }; 2.如果一个调用既匹配一个固定参数方法,又匹配一个变长参数方法,则优先匹配固定参数的方法 3.如果一个调用能匹配两个及以上的变长参数方法,则出现错误--这其实表示方法设计有问题,编译器会提示The method is ambiguous 4.方法只能有一个变长参数,且必须放在参数列表的最后一个java 变长参数使用原则,布布扣,bubuko.com