Java:实例变量与局部参数
我对此感到困惑:Java:实例变量与局部参数,java,scope,Java,Scope,我对此感到困惑: private RenderingHints hints; public void addRenderingHints(Map hints) { hints.putAll(hints); } (来自) Map和RenderingHints都有putAll成员函数: 我了解到局部参数可以隐藏实例变量。那么这部分代码的作用是什么(有用)?代码是错误的。目前,它本身添加了参数Map-hint的元素,结果什么也不做 代码应为: public void addRenderi
private RenderingHints hints;
public void addRenderingHints(Map hints) {
hints.putAll(hints);
}
(来自)
Map
和RenderingHints
都有putAll
成员函数:
我了解到局部参数可以隐藏实例变量。那么这部分代码的作用是什么(有用)?代码是错误的。目前,它本身添加了参数
Map-hint
的元素,结果什么也不做
代码应为:
public void addRenderingHints(Map hints) {
this.hints.putAll(hints);
}
区别在于使用
this.hints时。使用此
引用类中的字段。代码错误。目前,它本身添加了参数Map-hint
的元素,结果什么也不做
代码应为:
public void addRenderingHints(Map hints) {
this.hints.putAll(hints);
}
区别在于使用this.hints时。使用此
引用类中的字段。它将参数所引用的映射
的内容添加到自身中。也就是说,它对参数调用putAll
,将参数传入。实例成员根本不参与
这不太可能是本意。他们的意思可能是:
this.hints.putAll(hints);
在实例字段上调用putAll
,传递参数
这就是为什么一些Java lint工具和IDE有一个选项要求您在实例字段和方法前面加上This.
,即使语言规范将其设置为可选的(呃,当它们不受本地参数的影响时)。在任何情况下,希望任何体面的IDE都会警告您该参数正在隐藏实例字段。它会将参数所引用的映射的内容添加到自身中。也就是说,它对参数调用putAll
,将参数传入。实例成员根本不参与
这不太可能是本意。他们的意思可能是:
this.hints.putAll(hints);
在实例字段上调用putAll
,传递参数
这就是为什么一些Java lint工具和IDE有一个选项要求您在实例字段和方法前面加上This.
,即使语言规范将其设置为可选的(呃,当它们不受本地参数的影响时)。在任何情况下,希望任何合适的IDE都会警告您,参数正在隐藏实例字段。这是一个错误。这段代码并没有达到作者的目的,您可以将这段代码复制并粘贴到任何JavaIDE中,然后检查behaviour@bers:比那更糟。它改变了参数,这是个错误。这段代码并没有达到作者的目的,您可以将这段代码复制并粘贴到任何JavaIDE中,然后检查behaviour@bers:比那更糟。它改变了参数。