Там нет ничего особенного Toast
здесь. Вы просто вызываете статический метод, который создает экземпляр (или может повторно использовать существующий) - это деталь реализации). Это образец, который вы увидите повсюду - например, Calendar.getInstance()
. Иногда вы можете вызвать конструктор вместо этого, иногда вы можете только создать экземпляр через статический метод.
Если что-то происходит под капотом, возможно, что где-то в реализации будет вызов конструктора. Вот простой пример:
public final class CreateViaMethod {
private final String name;
private CreateViaMethod(String name) {
this.name = name;
}
public static CreateViaMethod newInstance(String name) {
return new CreateViaMethod(name);
}
}
Существуют различные причины, почему дизайнер API может хотят, чтобы сделать это. Например, может быть несколько методов «создания» с одинаковыми типами параметров, но разные имена, например.
public static Duration fromSeconds(int seconds)
public static Duration fromMinutes(int minutes)
public static Duration fromHours(int hours)
... Вы не могли бы иметь три перегруженных конструкторов, но вы можете дать Методы разные имена.
Не уверен ... Но, вероятно, так же, как 'SomeClass.getInstance()' для одноэлементных классов ??? Метод 'makeText()' вероятно, создает новый объект или возвращает уже существующий объект. – Codebender