本文介绍了Java字段不可见的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

作为我家庭作业的一部分,我得到了一个已经准备好的公共静电void main方法。我的工作是通过创建与此相关的所有方法来补充这一点。这应该在另外三个班级中完成。

在已经准备好的Main方法中,有以下代码:

ticket = new LotteryTicket(10);
ticket.ticketOwner = new Player();

LotteryTicketPlayer是我创建的其他类。LotteryTicket类中的相关实例变量为:

private LotteryRow[] rows;
private Player ticketOwner;

public LotteryTicket(int maxNumberOfRows) {
    this.rows = new LotteryRow[maxNumberOfRows];
}

Player如前所述,是我创建的另一个类。在这个类中,除了其他内容之外,还有一个用于用户输入数据(如姓名、地址、邮政编码等)的方法。

当我尝试运行该程序时,ticket.ticketOwner = new Player();行出错。错误是:"字段LotteryTicket.ticketOwner不可见"

这可能是什么原因?如果您能帮忙,我将不胜感激!我希望我提供的代码是足够的。我以前没有遇到过此错误消息,因此我不知道该怎么办。

推荐答案

问题的核心是您尝试访问的字段(ticketOwner)标记为private。此外,至少从我们看到的情况来看,似乎缺少用于访问它的getter/setter。

虽然快速解决方法是添加getter/setters并使用它们访问字段,但另一种难看的方法是将字段设置为public。但是你会想继续读下去.

您的最佳选择(如果彩票需要玩家,似乎是这样)是将Player实例放在LotteryTicket本身的构造函数中,这样就不会产生额外的开销。

public LotteryTicket(int maxNumberOfRows, Player player) {
        this.rows = new LotteryRow[maxNumberOfRows];
        this.ticketOwner = player;
}

编辑

您的调用将如下所示:

Player p = new Player();
// invoke APIs on (Player p), if needed
ticket = new LotteryTicket(10, p);

这篇关于Java字段不可见的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

05-27 08:01
查看更多