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

Java中Hand类如何接收Card对象?不可修改Tester类

问题解决:Hand类无法匹配Tester中的构造调用

错误原因

编译报错的核心原因是:Hand类没有提供能接收多个Card对象作为参数的构造方法。Tester代码中直接通过new Hand(new Card(...), new Card(...), ...)传入5个Card实例,但当前Hand类仅有无参构造,编译器找不到匹配的构造方法,因此报错。此外,Hand类未导入java.util.ArrayList,也会导致编译错误。

修复方案(仅修改Hand类,不改动Tester)

给Hand类添加一个支持可变参数的构造方法,同时补全ArrayList的导入语句,具体修改后的Hand类代码如下:

import java.util.ArrayList;

public class Hand
{
    private ArrayList<Card> cards;
 
    // 保留原无参构造,兼容可能的其他调用场景
    public Hand()
    {
        cards = new ArrayList<Card>();
    }

    // 添加可变参数构造方法,接收任意数量的Card对象
    public Hand(Card... cardArray)
    {
        cards = new ArrayList<Card>();
        // 将传入的所有Card对象添加到手牌集合中
        for (Card card : cardArray) {
            cards.add(card);
        }
    }
}

说明

  1. 可变参数Card... cardArray:允许构造方法接收0个或多个Card对象,完美匹配Tester中传入5个Card实例的写法。
  2. 集合初始化:在新构造方法中先初始化cards集合,再遍历参数将每个Card添加进去,完成手牌的初始化逻辑。
  3. 导入包:必须添加import java.util.ArrayList;,否则编译器无法识别ArrayList类,会报"找不到符号"错误。

Card类的代码无需修改,其带参构造可以正常被Tester用来创建Card实例。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 00:20:36