Интересно, почему Java 5 и выше предоставляют форматировщик формата printf, используя статический метод в классе String следующим образом:
public static String format(String format, Object... args)
вместо
public String format(Object... args)
чтобы мы могли написать "%02d".format(5), чтобы получить 05 вместо String.format("%02d", 5).
Я представил себе, могу ли я изменить класс String, я мог бы добавить это:
public String format(Object... args) {
return format(this, args)
}
чтобы получить тот же результат.
Я обнаружил, что в С# вместо метода экземпляра используется статический метод.
Интересно, почему они решили это сделать, но я не пришел к объяснению. Методы экземпляра trim и substring возвращают новый экземпляр строки, поэтому они должны были сделать то же самое с format.
Кроме того, класс DateFormat также использует это:
public final String format(Date date)
для даты форматирования. Поэтому, если мы рассмотрим экземпляр DateFormat как форматирования, экземпляр String также можно использовать в качестве форматирования.
Любые идеи?