Java 为什么我会得到;赋值的左侧必须是变量“quot;”;?

Java 为什么我会得到;赋值的左侧必须是变量“quot;”;?,java,arraylist,Java,Arraylist,我正在做一个“狗登记簿”,在那里你可以保存关于狗的信息,并对狗进行竞拍等。 我是一个初学者,最近有人告诉我数组列表应该是私有的,这个信息让我遇到了一些麻烦 我得到了一个名为Auction的类,您可以在其中存储出价,我在这个类中创建了一个get方法用于主类。它适用于每一行,除了我的方法中可以删除用户的一行 private void deleteUser() { System.out.println("Enter the name of the user: "); String na

我正在做一个“狗登记簿”,在那里你可以保存关于狗的信息,并对狗进行竞拍等。 我是一个初学者,最近有人告诉我数组列表应该是私有的,这个信息让我遇到了一些麻烦

我得到了一个名为
Auction
的类,您可以在其中存储出价,我在这个类中创建了一个get方法用于主类。它适用于每一行,除了我的方法中可以删除用户的一行

private void deleteUser()
{
    System.out.println("Enter the name of the user: ");
    String name = input.nextLine().toLowerCase().trim();

    User deleteUser = getUser(name);
    while (name.isEmpty()) {
        System.out.println("Error. Enter the name of the user: ");
        name = input.nextLine().toLowerCase().trim();

        deleteUser = getUser(name);
    }

    if (deleteUser == null) {
        userException();
        return;
    }

    for (Auction a : auctionRegister) {
        ArrayList<Bid> bids = new ArrayList<>();
        for (Bid b : a.getBidList()) {
            if (b.getUser() != deleteUser) {
                bids.add(b);
            }
        }
        a.getBidList() = bids;
    }

    if (deleteUser.getDogList() != null) {

        for (Dog dog : deleteUser.getDogList()) {
            dogRegister.remove(dog);
        }
    }

    userRegister.remove(deleteUser);
    System.out.println("User " + deleteUser.getUserName() + " is removed");
}

当我将数组列表公开时,一切都正常,所以我的问题是,如何解决这个问题?

Java有两种不同的“bucket”来存储信息。一种是变量,另一种是常数。这两种类型都可以让您查看桶中的内容。变量还允许您替换存储桶的当前内容


您的语法,
a.setbidleist()
是一个方法调用,它是常量。可以从中读取,但不能为其指定新值。因为它位于赋值语句的左侧,所以要求Java做它不能做的事情

Java有两种不同的存储信息的“bucket”。一种是变量,另一种是常数。这两种类型都可以让您查看桶中的内容。变量还允许您替换存储桶的当前内容


您的语法,
a.setbidleist()
是一个方法调用,它是常量。可以从中读取,但不能为其指定新值。因为它位于赋值语句的左侧,所以要求Java做它不能做的事情

只能将(
=
)分配给变量
a.getBidList()
不是变量。你可能需要一个二传手
a.setBidList(bids)
Java没有引用语义,因此
getBidList
返回一个值,您可以将该值更改为其他值,然后将更改后的值扔掉,这有什么意义?(当然,正如编译器告诉你的那样,它是不合法的。但是如果它是合法的,它什么也不会做。如果
sqrt(5)=3;
是合法的,它不会将五的平方根更改为三。它会计算五的平方根,用三替换,然后扔掉三。)谢谢@Michael I创建了一个setter,如下所示:public ArrayList setBidList(Bid-Bid){return this.bidRegister=setBidList(Bid);}但这导致了另一个问题,我得到的不是前面的错误消息,而是“类型拍卖中的setBidList(Bid)方法不适用于参数(ArrayList)”在我的主课上。如何解决此问题?您只能将(
=
)分配给变量
a.getBidList()
不是变量。你可能需要一个二传手
a.setBidList(bids)
Java没有引用语义,因此
getBidList
返回一个值,您可以将该值更改为其他值,然后将更改后的值扔掉,这有什么意义?(当然,正如编译器告诉你的那样,它是不合法的。但是如果它是合法的,它什么也不会做。如果
sqrt(5)=3;
是合法的,它不会将五的平方根更改为三。它会计算五的平方根,用三替换,然后扔掉三。)谢谢@Michael I创建了一个setter,如下所示:public ArrayList setBidList(Bid-Bid){return this.bidRegister=setBidList(Bid);}但这导致了另一个问题,我得到的不是前面的错误消息,而是“类型拍卖中的setBidList(Bid)方法不适用于参数(ArrayList)”在我的主课上。我如何解决这个问题?
a.getBidList() = bids;