Java可变参数Object... args

本文介绍了Java中实现实参个数可变的方法,包括方法重载、数组参数Object[] args和可变参数Object... args。详细讨论了可变参数的定义、调用、处理、传参以及与泛型和重载的关系。通过实例解析了可变参数的使用技巧和注意事项。
摘要由CSDN通过智能技术生成

引言

 因为Java要求实参(Arguments)和形参(Parameters)的个数和类型都必须逐一匹配,而形参在定义方法时就已经固定下来了,那么应该如何在Java程序里定义实参个数可变的方法呢?目前有以下三种解决方式:

  1. 方法重载
  2. 数组参数Object[] args
  3. 动态参数/可变参数Object… args

 说明:以上方法实现了实参个数可变,Object实现了参数类型可变。

一、方法重载

 简介:重载允许在同一个类拥有许多只有形参列表不同的方法。然后,由编译器根据调用时的实参来选择到底要执行哪一个方法。
 缺点:尽管可以通过重载机制,为同一个方法提供带有不同数量的形参的版本,但这仍不能达到让实参数量任意变化的目的。
 举例:可以通过重载testOverloading方法,实现传入多种参数的可能。

public class OverloadingSampleA {
     
  
    public static void main(String[] args) {
     
        testOverloading(1);// 打印出A  
        testOverloading(1, 2);// 打印出B  
    }  
  
    private static void testOverloading(int i) {
     
        System.out.println("A");  
    }  
  
    private static void testOverloading(int i, int j) {
     
        System.out.println("B");  
    }  
}  

二、Object[] args

 缺点:虽然只需一个方法,但在调用方法时,需要构造数组参数(先声明一个数组,再将参数一个个加到数组中),用起来太麻烦。
 举例:最常见的是main方法,利用一个数组来包裹要传递的实参。

    public static void main(String[] args) {
   
        
    }

三、Object… args

 J2SE 1.5中提供了Varargs机制(variable number of arguments),允许直接定义能和多个实参相匹配的形参。

3.1 定义

 定义:类型… 参数名
 原理:编译器会把这个形参转化为一个数组形参,并在编译出的class文件里作上一个记号,表明这是个实参个数可变的方法。
 注意:

  1. 由于存在这样的转化,所以不能再为这个类定义一个和转化后的方法签名一致的方法。
  2. 可变长参数必须是最后一个参数。
  3. 可变参数同时可以跟固定的参数混合使用,但是一个方法的参数中不能同时拥有2种类型的可变参数。

 举例:以下两个方法“等效”,且不能在一个类下同时定义。

private static int sumUp(int.
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值