Другой способ создания объекта в java? [Дубликат]

Рассмотрим коллекцию шаров в ведре, все в черном цвете. Ваша задача - покрасить эти шары следующим образом и использовать их для соответствующей игры,

Для тенниса - желтый, красный. Для крикета - белый

Теперь ведро имеет шары в трех цветах: желтый, красный и белый. И теперь вы сделали раскраску. Только вы знаете, какой цвет для какой игры.

Раскрашивание шаров - Хеширование. Выбор мяча для игры - Равно.

Если вы сделали раскраску, а кто-то выбрал мяч для крикета или тенниса, они не будут игнорировать цвет !!!

1
задан Henry98 12 June 2015 в 17:16
поделиться

3 ответа

Здесь нет ничего особенного в 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)

... у вас не могло быть трех перегруженных конструкторов, но вы можете дать методы разные имена.

8
ответ дан Jon Skeet 24 August 2018 в 00:05
поделиться
2
ответ дан Lajos Arpad 24 August 2018 в 00:05
поделиться

Поскольку Toast.makeText () - это статический метод, возвращающий объект Toast.

Toast - разработчики Android

0
ответ дан Stefan 24 August 2018 в 00:05
поделиться
Другие вопросы по тегам:

Похожие вопросы: