Удаление последнего ключевого слова из существующего метода - PullRequest
0 голосов
/ 17 сентября 2018

Скажем, у меня есть существующий код, который выглядит примерно так:

public class MyClass {
    private AnotherClass obj;
    // ... (class implementation)
    public final getObj() { return obj; // It is this simple }
}  

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

Я хотел бы удалить final из определения метода getObj(). Мне известно о том, что метод больше не будет встроенным .

Какие еще возможные побочные эффекты могут возникнуть при удалении ключевого слова final из getObj() для существующих пользователей?

Ответы [ 2 ]

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

Из вашего источника:

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

Встраивание - это процесс минимизации накладных расходов, а методы встраиваются в зависимости от количества циклов и вызовов.

Ключевое слово final используется для определения объекта, который может быть назначен только один раз. При использовании с методами они не могут быть переопределены.

Таким образом, удаление этого означает, что только вы можете назначить эту переменную другому объекту, в случае, если это метод, который они могут переопределить, когда интерфейс реализован или когда класс унаследован, другого побочного эффекта нет!

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

Как прокомментировал @Khelwood:

Когда метод объявляется с ключевым словом final, он называется final метод, и он не может быть переопределен, и мы должны объявить методы с последнее ключевое слово, для которого мы должны следовать той же реализации на протяжении всех производных классов.

Таким образом, если вы удалите ключевое слово final, любой класс реализации сможет переопределить функциональность этого метода (как совет @Khelwood, лучше узнать, почему он был объявлен как final, прежде чем удалять его).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...