Рассмотрим коллекцию шаров в ведре, все в черном цвете. Ваша задача - покрасить эти шары следующим образом и использовать их для соответствующей игры,
Для тенниса - желтый, красный. Для крикета - белый
Теперь ведро имеет шары в трех цветах: желтый, красный и белый. И теперь вы сделали раскраску. Только вы знаете, какой цвет для какой игры.
Раскрашивание шаров - Хеширование. Выбор мяча для игры - Равно.
Если вы сделали раскраску, а кто-то выбрал мяч для крикета или тенниса, они не будут игнорировать цвет !!!
Здесь нет ничего особенного в 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)
... у вас не могло быть трех перегруженных конструкторов, но вы можете дать методы разные имена.
Поскольку Toast.makeText () - это статический метод, возвращающий объект Toast.