【问题标题】:referring to this only (not attributes), possible? [duplicate]仅指这个(不是属性),可能吗? [复制]
【发布时间】: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


【解决方案1】:

你不能给this分配一个新的值,因为它只是一个关键字来代表当前对象沿着类代码,它不是一个变量.

除此之外,想想语义:你在对象内部要求它成为另一个对象,这将非常棘手!

最接近的方法是将一些对象包装为类的字段,然后您可以为该字段分配一个新实例。像这样:

class MyObjectWrapper{
   private MyObject myObject = new MyObject();
   ...
   public void removeAll() {
       this.myObject = new MyObject();
   }
}

检查这个相关问题:Why is assignment to 'this' not allowed in java?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-04
    • 2015-03-02
    • 2019-09-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多