Присвоение переменной возвращаемого значения метода

Есть строки:

CrimeLab crimeLab = CrimeLab.get(this);
mCrimes = crimeLab.getCrimes();

Если я правильно понимаю, в первой строке происходит присвоение переменной того, что возвращает метод get(). Но в таком случае как мы вызываем с помощью этой переменной метод getCrimes(), который находится в том же классе, что и метод get()? Или в первой строке происходит что-то совсем другое?


Ответы (2 шт):

Автор решения: Alex_Skvortsov

Первый метод

CrimeLab.get(this);

Является статичным методом класса. Возвращает объект класса (создает, если ранее не был создан).

Второй метод

crimeLab.getCrimes();

Является методом экземпляра класса. То есть вызываться может только из конкретного объекта.

Аналогия:

Класс Кролик.

Статичный метод bool canRun() может быть вызван как Кролик.canRun();. Нам не нужно видеть перед собой конкретного кролика, чтобы сказать, умеет ли он бегать.

Метод экземпляра класса String getName() не может быть вызван у класса, нам нужен конкретный кролик, чтобы узнать, как его зовут. То есть вызов будет:

Кролик кролик = Кролик();
String name = кролик.getName();
→ Ссылка
Автор решения: igo

Вы создаете экземпляр класса CrimeLab с именем crimeLab.

Метод get возвращает объект CrimeLab.

Далее crimeLab.getCrimes() возвращает другой объект (серее всего список mCrimes), ссылку на который вы сохраняете в переменой mCrimes.

→ Ссылка