将方法调用包装在新对象中有什么好处?

jia*_*hie 1 java android inner-classes

我在一些公司内部项目中看到了这个代码片段,这真的让我感到困惑,没有其他人知道谁&&为什么这样写它.

private void setDomStorageEnabled(final boolean isEnalbe) {
    new Object() {
        public void setDomStorageEnabled() {
            mWebView.getSettings().setDomStorageEnabled(isEnalbe);
        }
    }.setDomStorageEnabled();
}
Run Code Online (Sandbox Code Playgroud)

有人对此有所了解吗?

Gho*_*ica 6

此代码创建一个匿名内部类并实例化它,以调用该实例上的方法.一种既可以直接调用的方法.

这样做没有意义,它不会增加任何价值.相反,它显然只会引起读者的困惑.

因此,简单的答案是:你应该扔出那个东西然后去

private void setDomStorageEnabled(boolean isEnalbe) {
  mWebView.getSettings().setDomStorageEnabled(isEnalbe);
}
Run Code Online (Sandbox Code Playgroud)

代替.(我也删除了无意义final,因为这没有在这里添加任何值.除此之外,mWebView可以调用webView,当坚持java命名约定对你很重要.)