【发布时间】:2022-01-09 11:02:31
【问题描述】:
上下文(不是理解问题所必需的):
我必须实现一个元素集合。该类称为 DocumentCollection。它本质上是一个列表数组(哈希数组的基本形式),更好地表述为:一个对每个相应列表的第一个元素的引用数组。
我已经实现了一个基本的构造函数,它将一个 int 作为数组的大小,并将 null 初始化列表放入每个存储桶中。
一种实现方法是removeAll。我的第一个想法是生成一个与原始集合大小相同的新集合,并将this 分配给这个新创建的集合。
在方法的代码下方。
public boolean removeAll(){
if(isEmpty()){
return false;
}
int size = buckets.length;
this = new DocumentCollection(size);
return true;
}
其中buckets 是数组。
由于这是作业的一部分,我不想包含整个班级的代码。这对我的问题来说已经足够了。
Intellij 给我以下错误消息(w.r.t. this 的行):预期变量。
很遗憾,这条信息不够雄辩,我无法理解。
旁注:是的,我可以遍历数组并将空列表分配给它们。这不是我要在这里强调的重点
问题:
我在做一些根本错误的事情吗?换句话说,试图给当前对象(即 this)一个新的引用是非法的吗?或者可以做到吗,我只是使用了一些错误的语法?
【问题讨论】:
-
这是非法的。没有看到你的课,我不确定你到底想做什么。
-
即使语法是合法的,Java always passes objects by their reference-value (
stackoverflow.com) 也会使这个“功能”变得无用或创建一个极端情况,从而导致非常混乱的语义。
标签: java