如何实现与带默认参数的Python函数功能一致的Java方法
Java实现带默认参数方法的方案
实现说明
Java 本身没有内置的默认参数语法,要实现和示例Python代码完全一致的效果,最简洁的方案是使用方法重载:定义多个同名方法,参数数量较少的重载方法内部自动补全默认值后调用全参数的方法即可。
完整实现代码
public class DefaultParamExample { // 全参数核心方法 public static void myFunc(String name, int std, int rollNo, String branch) { System.out.printf("My name is %s, I read in class %d, my roll no is %d, my branch is %s%n", name, std, rollNo, branch); } // 仅传入name的重载方法,自动补全所有默认值 public static void myFunc(String name) { myFunc(name, 3, 61, "CSE"); } // 传入name和std的重载方法,自动补全剩余默认值 public static void myFunc(String name, int std) { myFunc(name, std, 61, "CSE"); } // 传入name、std、rollNo的重载方法,自动补全剩余默认值 public static void myFunc(String name, int std, int rollNo) { myFunc(name, std, rollNo, "CSE"); } public static void main(String[] args) { // 调用方式和Python示例完全一致 myFunc("hacker", 3); myFunc("hacker", 3, 60); myFunc("hacker"); } }
运行输出
运行上述代码后输出结果和你提供的Python代码输出完全一致:
My name is hacker, I read in class 3, my roll no is 61, my branch is CSE My name is hacker, I read in class 3, my roll no is 60, my branch is CSE My name is hacker, I read in class 3, my roll no is 61, my branch is CSE
补充说明
如果方法参数数量较多,写大量重载方法会比较冗余,也可以选择使用Builder构造器模式或者Optional参数来实现,不过对于你当前的场景,方法重载是最直观、和调用习惯最匹配的实现方案。
内容的提问来源于stack exchange,提问作者Akash Nath
相关产品推荐
相关产品推荐

