Интересно, почему 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)
}
чтобы получить тот же результат.
Я обнаружил, что в C # вместо метода экземпляра также используется статический метод.
Интересно, почему они решили это сделать, но я не пришел к объяснению. Методы экземпляра trim
и substring
возвращают новый экземпляр строки, поэтому они должны были сделать то же самое с format
.
Кроме того, класс DateFormat
также использует это:
public final String format(Date date)
для форматирования дат. Поэтому, если мы рассмотрим экземпляр DateFormat в качестве средства форматирования, экземпляр String также можно будет использовать в качестве средства форматирования.
Есть идеи?