You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java是否有Python的*args和**kwargs等效实现?如何实现可变参数方法?

Java中实现可变参数与关键字参数的等效写法

一、对应Python *args 的可变参数实现

Java提供了**可变参数(varargs)**语法,和Python的*args用法近似,无需手动传入列表,直接传任意数量的同类型参数即可。语法是在参数类型后加...。

比如实现你示例中的求和函数:

public static int sumUp(int... args) {
    int res = 0;
    for (int arg : args) {
        res += arg;
    }
    return res;
}

调用方式和Python完全一致:

sumUp(12, 1);    // 返回13
sumUp(12, 8, 6); // 返回26

注意:可变参数必须是方法的最后一个参数,一个方法只能有一个可变参数。

二、对应Python **kwargs 的等效实现

Java没有直接和**kwargs完全对应的语法,但可以通过**Map集合**来模拟关键字参数的效果,将键值对作为参数传入。

比如实现一个接收关键字参数的函数:

public static void printKwargs(Map<String, Object> kwargs) {
    for (Map.Entry<String, Object> entry : kwargs.entrySet()) {
        System.out.println(entry.getKey() + ": " + entry.getValue());
    }
}

调用时可以传入HashMap或者用Java 9+的Map.of()简化写法:

// Java 8及以下写法
printKwargs(new HashMap<String, Object>() {{
    put("name", "Alice");
    put("age", 25);
}});

// Java 9+简化写法
printKwargs(Map.of("name", "Bob", "city", "New York"));

如果想更贴近**kwargs的直观调用,可以结合静态工厂方法或者建造者模式封装,但本质还是基于Map来存储键值对。

内容的提问来源于stack exchange,提问作者Godswill

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 22:10:30