Java:实例变量与本地参数

时间:2015-07-02 17:46:04

标签: java scope

我很困惑:

private RenderingHints hints;

public void addRenderingHints(Map hints) {
    hints.putAll(hints);
}

(来自http://dev.geogebra.org/trac/browser/trunk/geogebra/desktop/org/freehep/graphicsio/AbstractVectorGraphicsIO.java?rev=39574#L1238

MapRenderingHints都有putAll个成员函数: https://docs.oracle.com/javase/8/docs/api/java/awt/RenderingHints.html#putAll-java.util.Map- https://docs.oracle.com/javase/8/docs/api/java/util/Map.html#putAll-java.util.Map-

我了解到本地参数可以影响实例变量。那么这部分代码做了什么(有用)?

2 个答案:

答案 0 :(得分:4)

代码错了。目前,它添加了参数gsub的元素本身,它们将不再做任何事情。

代码应为:

Map hint

区别在于使用public void addRenderingHints(Map hints) { this.hints.putAll(hints); } 时。使用this.hints指的是类中的字段。

答案 1 :(得分:1)

它将参数引用的[difftool "codecompare"] cmd = 'C:\\Program Files\\Devart\\Code Compare\\codecompare.exe' -W \"$LOCAL\" \"$REMOTE\" renames = true [diff] tool = codecompare guitool = codecompare [mergetool "codecompare"] cmd = 'C:\\Program Files\\Devart\\Code Compare\\codemerge.exe' -MF=\"$LOCAL\" -TF=\"$REMOTE\" -BF=\"$BASE\" -RF=\"$MERGED\" trustExitCode = true [mergetool] keepBackup = false [merge] tool = codecompare guitool = codecompare 的内容添加到自身。也就是说,它在参数上调用Map,传入参数。实例成员根本不参与。

这不太可能是预期的。他们可能意味着:

putAll

实例字段上调用this.hints.putAll(hints); ,传入参数

这就是为什么有些Java lint工具和IDE可以选择要求用putAll为实例字段和方法加前缀的一个原因,即使语言规范使它成为可选项(呃,当它们没有被遮蔽时)通过本地参数)。在任何情况下,希望任何体面的IDE都会警告您该参数正在影响实例字段。