Después de que ha creado un Formatter, puede usar su método format( ) para crear una cadena formada. Aquí se muestran sus dos formas:
Formatter format(Locale loc, String cadFmt, Object ... args) Formatter format(String cadFmt, Object ... args)
En la primera forma, el parámetro loc especifi ca la confi guración de región y de idioma local. En la segunda, se usa el idioma de la instancia de Formatter. Por esto, probablemente la segunda forma sea la más común. En el caso de ambas formas, cadFmt incluye dos tipos de elementos. El primer tipo está integrado por caracteres que simplemente se copian en el destino. El segundo tipo contiene especifi cadores de formato que defi nen la manera en que están formados los argumentos subsecuentes pasados vía args.
En su forma más simple, un especifi cador de formato empieza con un signo porcentual seguido por el especifi cador de conversión de formato. Todos estos especifi cadores contienen un solo carácter. Por ejemplo, el especifi cador de formato para los datos de punto fl otante es %f. En general, debe
Método Descripción
void close( ) Cierra el Formatter que invoca. Esto causa que se libere cualquier recurso empleado por el objeto. Después de que se ha cerrado un
Formatter, ya no puede reutilizarse.
void fl ush( ) Limpia el búfer de formato. Esto causa que cualquier salida que se encuentra en búfer se escriba en el destino.
Formatter format(String cadFmt, Object ... args)
Forma los argumentos pasados mediante args, de acuerdo con los especifi cadotes de formato contenidos en cadFmt. Devuelve el objeto que invoca.
Formatter format(Locale loc, String cadFmt, Object ... args)
Forma los argumentos pasados mediante args, de acuerdo con los especifi cadotes de formato contenidos en cadFmt. El idioma local especifi cado por loc se usa para este formato. Devuelve el objeto que invoca.
IOException ioException( ) Si el objeto que es el destino para la salida lanza una IOException, entonces se devuelve esta excepción. De otra manera, se devuelve null. Locale locale( ) Devuelve la confi guración de región y de idioma local del objeto que se
invoca.
Appendable out( ) Devuelve una referencia al objeto que es el destino para la salida. String toString( ) Devuelve la cadena obtenida al llamar a toString( ) en el objeto de
destino. Si se trata de un búfer, entonces se devolverá la salida formada.
haber el mismo número de argumentos que especifi cadores de formato, y ambos deben coincidir en orden, de izquierda a derecha. Por ejemplo, tome en consideración este fragmento:
Formatter fmt = new Formatter( );
fmt.format("Formatter es %s poderosa %d %f", "muy", 88, 3.1416); Esta secuencia crea un Formatter que contiene la siguiente cadena: Formatter es muy poderosa 88 3.141600
En este ejemplo, los especifi cadores de formato %s, %d y %f se reemplazan con los argumentos que siguen a la cadena de formato. Por tanto %s es reemplazada por "muy", %d es reemplazada con 88 y %f es reemplazada con 3.1416. Todos los demás caracteres simplemente se usan tal como están. Como podrá suponer, el especifi cador de formato %s especifi ca una cadena y %d un valor entero. Como se mencionó antes, %f especifi ca un valor de punto fl otante.
Es importante comprender que en el caso de cualquier instancia determinada de Formatter, cada llamada a format( ) agrega salida al fi nal de la salida anterior. Por tanto, si el destino de formato es un búfer, entonces cada llamada a format( ) adjunta la salida al fi nal del búfer. En otras palabras, una llamada a format( ) no restablece el búfer. Por ejemplo, estas dos llamada a format( ) fmt.format("%s %s", "Esto", "es");
fmt.format("%s", " una prueba. ");
crea una cadena que contiene "Esto es una prueba." Por tanto, es posible hacer una secuencia de llamadas a format( ) para construir la cadena deseada.
El método format( ) acepta una amplia variedad de especifi cadores de formato, que se muestran en la tabla 4-2. Observe que muchos especifi cadores tienen formas en mayúsculas y minúsculas. Cuando se usa un especifi cador en mayúsculas, entonces las letras se muestran en mayúsculas. De otra manera, los especifi cadores en mayúsculas y minúsculas realizan la misma conversión. Es importante comprender que Java revisa el tipo de cada especifi cador de formato contra su argumento correspondiente. Si el argumento no coincide, se lanza una IllegalFormatException, que también se lanza si un especifi cador de formato está mal formado o si no se proporciona un argumento correspondiente que coincida con un especifi cador de formato. Hay varias subclases de IllegalFormatException que describen errores específi cos. (Consulte la documentación de la API de Java para conocer detalles).
Si está usando una versión basada en búfer de Formatter, después de llamar a format( ), puede obtener la cadena formada si llama a toString( ) en Formatter. Devuelve el resultado de llamar a toString( ) en el búfer. Así, continuando con el ejemplo anterior, la siguiente instrucción permite obtener la cadena formada que está contenida en fmt:
String cad = fmt.toString( );
Por supuesto, si sólo quiere desplegar la cadena formada, no hay razón para asignarla primero a un objeto String. Cuando un objeto Formatter se pasa a println( ), por ejemplo, se llama automáticamente al método toString( ), que (en este caso) devuelve el resultado de llamar a toString( ) en el búfer.
Otro tema importantes es que puede obtener una referencia a un destino al llamar a out( ). Devuelve una referencia al objeto Appendable en que se escribió la salida formada. En el caso de un Formatter basado en búfer, esto será una referencia al búfer, que es un StringBuilder, como opción predeterminada.