gpt4 book ai didi

java - 为什么java中不允许分配给 'this'?

转载 作者:行者123 更新时间:2023-12-02 03:02:02 26 4
gpt4 key购买 nike

我从编译器得到的错误是“赋值的左侧必须是变量”。我的用例是深度复制,但并不真正相关。

在 C++ 中,可以分配给 *this

问题不在于如何规避对 this 的赋值。这很简单,而是不让 this 成为变量的决定背后的基本原理是什么。

原因是技术原因还是概念原因?

到目前为止我的猜测 - 以随机方法重建对象的可能性很容易出错(概念上),但在技术上是可能的。

请避免使用“因为 Java 规范如此规定”的变体。我想知道这个决定的原因。

最佳答案

In C++, one can assign to *this

是的,但是你不能在 C++ 中执行 this = some ,我实际上认为这更符合你在 Java 方面所询问的内容。

[...] what rationale is there behind the decision not to make this a variable.

我想说的是清晰度/可读性。

this 被选为保留字,可能是因为它没有作为显式参数传递给方法。将其用作普通参数并能够为其重新分配新值,会严重扰乱可读性。

事实上,许多人认为,正是出于这个原因,您根本不应该更改参数变量。

Are the reasons technical or conceptual?

我认为主要是概念性的。但会出现一些技术问题。例如,如果您可以为 this 重新分配一个值,则可以将实例变量完全隐藏在局部变量后面。

My guess so far - the possibility of rebuilding an Object in a random method is error-prone (conceptual), but technically possible.

我不确定我是否完全理解这个陈述,但是,是的,容易出错可能是决定将其设为关键字而不是变量的主要原因。

关于java - 为什么java中不允许分配给 'this'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57046750/

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