Java重载之带有可变形参的方法

本文介绍Java中方法重载的概念,并通过实例演示如何使用可变形参。文章强调了可变形参在方法重载中的注意事项及可能带来的代码可读性问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

如果重载的方法中带有可变形参的方法时,需要注意

public class OverloadVarargsTest
{
	public void test(String msg)
	{
		System.out.println("只有一个字符串参数的test方法");
	}
	
	//带可变形参的重载方法
	public void test(String... books)
	{
		System.out.println("****形参可变test方法********");
	}
	public static void main(String[] args) 
	{
		OverloadVarargs ov=new OverloadVarargs();
		
		ov.test();//执行第一个test方法
		ov.test("Java编程思想","Java核心技术卷");//执行第二个

		ov.test("nihao");//执行第一个test方法
		ov.test(new String[]{"aa","bb"});//执行第二个test方法
	}
}

  另外,不建议使用重载的可变参数方法,因为它能降低代码的可读性!!!

转载于:https://www.cnblogs.com/mylove-huan/p/7097675.html

### Java 中可变长数列表的用法 #### 定义与语法 在Java中,可以通过在形声明后面加上三个点 `...` 来定义一个接受不定数量实方法。这种特性被称为varargs(variadic arguments),即允许函数接收任意数量相同类型的数[^1]。 ```java public void myMethod(Type... parameters){ // 方法体 } ``` 这里 `Type` 是数的数据类型,而 `parameters` 则是一个数组名,在方法内部它会被当作常规的一维数组来访问。 #### 实际应用案例 下面给出具体的例子展示如何利用varargs简化代码逻辑: ```java // 打印多个字符串的例子 public class PrintStrings { public static void print(String... messages) { for (String msg : messages) { System.out.println(msg); } } public static void main(String[] args) { print("Hello", "World!"); // 可以传递两个数 print(); // 或者不传任何数也合法 } } ``` 这段程序展示了当调用print()时既可以提供若干个单独的字符串也可以完全省略它们;这得益于varargs机制使得接口更加友好易用[^2]。 #### Varargs与其他形式数共存的情况 值得注意的是,带有varargs的方法签名里只能存在一组这样的特殊数,并且通常放置于最右侧位置以便区分其他固定数目输入项[^3]。 ```java public int sum(int fixedParam, double... values) { int total = fixedParam; for(double value : values) { total += value; } return total; } sum(10); // 正确:仅给定fixedParam sum(10, 1.5, 2.7, 3.9); // 正确:提供了额外的double数值作为values部分 ``` 上述实例说明了即使有非变动型与其中也不会影响到整个过程正常运作的能力。 #### 编译器优先级规则 当遇到同名但不同数列表的方法重载情形下,JVM会尝试寻找最合适的选择而非直接采用具有varargs特性的那个选项——除非确实找不到更匹配的目标才会退而求其次考虑后者。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值