Интересно, почему 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 также можно использовать в качестве форматирования.
Любые идеи?