When used in conjunction with the {@link java.util.Formatter}, the above * class produces the following output for various format strings. * * {@code * Formatter fmt = new Formatter(); * StockName sn = new StockName("HUGE", "Huge Fruit, Inc.", * "Fruit Titanesque, Inc."); * fmt.format("%s", sn); // -> "Huge Fruit, Inc." * fmt.format("%s", sn.toString()); // -> "HUGE - Huge Fruit, Inc." * fmt.format("%#s", sn); // -> "HUGE" * fmt.format("%-10.8s", sn); // -> "HUGE " * fmt.format("%.12s", sn); // -> "Huge Fruit,*" * fmt.format(Locale.FRANCE, "%25s", sn); // -> " Fruit Titanesque, Inc." * } * *
Formattables are not necessarily safe for multithreaded access. Thread * safety is optional and may be enforced by classes that extend and implement * this interface. * *
Unless otherwise specified, passing a null argument to * any method in this interface will cause a {@link * NullPointerException} to be thrown. * * @since 1.5 */ public interface Formattable { /** * Formats the object using the provided {@link Formatter formatter}. * * @param formatter * The {@link Formatter formatter}. Implementing classes may call * {@link Formatter#out() formatter.out()} or {@link * Formatter#locale() formatter.locale()} to obtain the {@link * Appendable} or {@link Locale} used by this * formatter respectively. * * @param flags * The flags modify the output format. The value is interpreted as * a bitmask. Any combination of the following flags may be set: * {@link FormattableFlags#LEFT_JUSTIFY}, {@link * FormattableFlags#UPPERCASE}, and {@link * FormattableFlags#ALTERNATE}. If no flags are set, the default * formatting of the implementing class will apply. * * @param width * The minimum number of characters to be written to the output. * If the length of the converted value is less than the * width then the output will be padded by * ' ' until the total number of characters * equals width. The padding is at the beginning by default. If * the {@link FormattableFlags#LEFT_JUSTIFY} flag is set then the * padding will be at the end. If width is -1 * then there is no minimum. * * @param precision * The maximum number of characters to be written to the output. * The precision is applied before the width, thus the output will * be truncated to precision characters even if the * width is greater than the precision. If * precision is -1 then there is no explicit * limit on the number of characters. * * @throws IllegalFormatException * If any of the parameters are invalid. For specification of all * possible formatting errors, see the Details section of the * formatter class specification. */ void formatTo(Formatter formatter, int flags, int width, int precision); }