Java语法糖--个数可变的形参

简介: 本文目录1. 背景2. 优点3. 注意事项3.1 位置只能在方法的最后3.2 个数可变形参本质是数组,所以不能算重载

1. 背景

从JDK1.5开始,Java支持个数可变的形参,类似:

public class ParamDemo {
  public static void main(String[] args) {
    String basketball = "篮球";
    String football = "足球";
    showSports(basketball, football);
  }
  /**
   * 使用个数可变形参的方法
   */
  public static void showSports(String... sports) {
    for (String sport : sports) {
      System.out.println(sport);
    }
  }
}
2. 优点
其实个数可变形参的本质就是一位数组,但是如果上面的例子采用一位数组的话,写起来要更加麻烦点。
public class ParamDemo {
  public static void main(String[] args) {
    String basketball = "篮球";
    String football = "足球";
    showSports(basketball, football);
    showSportsByArray(new String[] { basketball, football });
  }
  /**
   * 使用个数可变形参的方法
   */
  public static void showSports(String... sports) {
    for (String sport : sports) {
      System.out.println(sport);
    }
  }
  /**
   * 使用1维数组作为形参
   */
  public static void showSportsByArray(String[] sports) {
    for (String sport : sports) {
      System.out.println(sport);
    }
  }
}
3. 注意事项
3.1 位置只能在方法的最后
由于个数可变的形参数量不确定,所以只能放到形参列表的最后。而数组形式的参数是可以放到形参列表任意位置的。
3.2 个数可变形参本质是数组,所以不能算重载
看下面的例子:
public class ParamDemo {
  public static void main(String[] args) {
    String basketball = "篮球";
    String football = "足球";
    showSports(basketball, football);
    showSportsByArray(new String[] { basketball, football });
  }
  /**
   * 使用个数可变形参的方法
   */
  public static void showSports(String... sports) {
    for (String sport : sports) {
      System.out.println(sport);
    }
  }
  /**
   * 使用1维数组作为形参
   */
  public static void showSports(String[] sports) {
    for (String sport : sports) {
      System.out.println(sport);
    }
  }
}
26
编译就报错了,如下,说明啥?String...这样的形参其实还是编译为String[]运作的,所以不算重载。
Duplicate method showSports(String[]) in type ParamDemo ParamDemo.java  
相关文章
|
3月前
|
自然语言处理 安全 Java
Java 语法糖是什么?
语法糖是一种编程语言的设计概念,旨在通过更简洁、易读的方式表示某些操作,提升代码可读性和减少错误。它不增加语言功能,而是简化代码。Java中的语法糖包括自动装箱与拆箱、增强型for循环、泛型、可变参数、try-with-resources、Lambda表达式、方法引用、字符串连接、Switch表达式和类型推断等,这些特性使Java代码更为简洁易读。
100 23
|
7月前
|
存储 Java
【Java】一文详解Java方法形参和实参
【Java】一文详解Java方法形参和实参
|
7月前
|
Java
java中FileOutputStream流中有参构造方法有无append形参的区别--超详细讲解版
java中FileOutputStream流中有参构造方法有无append形参的区别--超详细讲解版
58 0
|
7月前
|
Java 数据处理
【Java形参实参】在方法内如何使用?★ 外带简单及复杂例子参考
【Java形参实参】在方法内如何使用?★ 外带简单及复杂例子参考
156 0
|
7月前
|
IDE Java 开发工具
你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
你知道 Java 中关键字 enum 是一个语法糖吗?反编译枚举类
97 0
【面试题精讲】Java 中有哪些常见的语法糖?
【面试题精讲】Java 中有哪些常见的语法糖?
|
Java 编译器 索引
Java语法糖:甜化你的编程体验
Java语法糖:甜化你的编程体验
Java语法糖:甜化你的编程体验
|
Java
Java方法的重载、可变个数形参、方法参数的值传递机制
Java方法的重载、可变个数形参、方法参数的值传递机制
99 0
|
Java
【Java】形参和返回值
【Java】形参和返回值
85 0
|
Java
【Java基础篇】方法的使用(方法的使用以及形参实参的关系)
【Java基础篇】方法的使用(方法的使用以及形参实参的关系)
125 0