gpt4 book ai didi

java - 接口(interface)作为数据结构的一部分

转载 作者:行者123 更新时间:2023-12-01 12:20:09 25 4
gpt4 key购买 nike

我正在尝试编写一些代码(这里是java新手用户),但出现错误。我有预感,这与我对 AdvancedMatch 的类定义有关,AdvancedMatch 是锦标赛中的一场比赛。它需要有两个馈线匹配,可以是 AdvancedMatch 或 InitMatch,其中 InitMatch 没有馈线而 AdvancedMatch 有。为了实现这一目标,我使用了一个界面 ITournament,它使我可以选择将 ITournament 放入我的 AdvancedMatch 数据结构中。

public class AdvancedMatch implements ITournament {
MatchData data;
ITournament feeder1;
ITournament feeder2;

AdvancedMatch (MatchData data, ITournament feeder1, ITournament feeder2) {
this.data = data;
this.feeder1 = feeder1;
this.feeder2 = feeder2;
}
}


public class InitMatch implements ITournament {
MatchData data;

InitMatch (MatchData data) {
this.data = data;
}
}

interface ITournament {
public Boolean allScoresValid();

public Boolean highCapacityVenue(int ticketsSold);

public Boolean winnerAlwaysAdvanced();

public Boolean tWinnerContestant1() ;

}

在代码的后面,我尝试在方法中调用 feeder1.data,但不断收到数据无法解析或不是字段的错误。这让我很困惑,因为显然数据是 AdvancedMatch 和 InitMatch 的一部分。

public Boolean winnerAlwaysAdvanced() {
if (this.feeder1.tWinnerContestant1()) {
this.data.dCompareContestants1(this.feeder1.data);
}
else
return this.data.dCompareContestants2(this.feeder1.data);
}
}

如有任何帮助,我们将不胜感激。

最佳答案

您的 feeder1 已被宣布为 IT 锦标赛 ITournament feeder1; — 它没有声明为 InitMatch其中有 data属性。

当使用接口(interface)声明变量时,它只能访问在接口(interface)中声明的内容,而不管底层类实例如何。

由于 InitMatch 和 AdvancedMatch 都有 data 元素,因此您可以将其包含在接口(interface)定义中。然而,最佳实践需要“getter”,而不是直接访问。

interface ITournament {
public Boolean allScoresValid();
public Boolean highCapacityVenue(int ticketsSold);
public Boolean winnerAlwaysAdvanced();
public Boolean tWinnerContestant1();
public MatchData getMatchData();
}

关于java - 接口(interface)作为数据结构的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26724976/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com