В чем заключается преимущество переноса вызова метода в новый объект? - PullRequest
0 голосов
/ 11 сентября 2018

Я видел этот фрагмент кода в каком-то внутреннем проекте компании, который действительно озадачивает меня, и никто больше не знает, кто и почему написал его так.

private void setDomStorageEnabled(final boolean isEnalbe) {
    new Object() {
        public void setDomStorageEnabled() {
            mWebView.getSettings().setDomStorageEnabled(isEnalbe);
        }
    }.setDomStorageEnabled();
}

У кого-нибудь есть идеи по этому поводу?

1 Ответ

0 голосов
/ 11 сентября 2018

Этот код создает анонимный внутренний класс и создает его экземпляр для вызова метода в этом экземпляре. Метод, который также может быть вызван напрямую.

Нет смысла делать это, это не добавляет никакой ценности. Напротив, это, очевидно, только создает путаницу среди читателей.

Таким образом, простой ответ: вы должны выбросить эту вещь и пойти с

private void setDomStorageEnabled(boolean isEnalbe) {
  mWebView.getSettings().setDomStorageEnabled(isEnalbe);
}

вместо этого. (Я также удалил бессмысленное final, поскольку также не добавляет здесь никакого значения. Кроме того, mWebView можно было бы назвать webView, когда для вас важно придерживаться соглашений об именах Java. )

...