Duvida sobre o método format

Bom dia pessoal, tem como alguem tirar uma duvida minha sobre o método format, da classe DateFormat?

Bom seguinte vou comentando no codigo:

[code]
Locale local = new Locale(“pt”,“BR”);

Date date = new Date();

DateFormat dataFormatada = DateFormat.getDateInstance(DateFormat.MEDIUM, local) // Aqui eu sei que o método getDateInstance retorna um objeto DateFormat, e que estamos passando para o método getDateInstance uma constante MEDIUM, e um objeto locale;

String data = dataFormatada.format(date); // Bom aqui esta minha duvida, o método format formata minha data de acordo com os parametros pssados para o método
//getDateInstance, mas a pergunta é se o método getDateInstance passa realmente para o método format esses parametros? Ou acontece outra coisa? [/code]

A classe DateFormat é abstrata e nao pode ser instancia utilizando new DateFormat(), por isso ela possui esse metodo estático getDateInstance (…) que retorna uma instancia da classe Dateformat (na verdade este metodo cria uma instancia da sub-classe SimpleDateFormat).

Da uma olhada no codigo-fonte da classe para voce entender melhor! :wink:

rlazoti que é abstrato e que o método getDateInstance() me retorna um objeto DateFormat eu sei, eu quro saber se o método format usa os parametros passado para o método getDateInstance() ou seja se eu fizer:

DateFormat dataFormatada = DateFormat.getDateInstance(DateFormat.MEDIUM, local); String data = dataFormatada.format(date); // O que ta na minha cabeça é que o método getDateInstance ta passando para format esses parametros, quero saber se é isso mesmo.

Usa. É só testar.

[quote=evertonsilvagomesjava]rlazoti que é abstrato e que o método getDateInstance() me retorna um objeto DateFormat eu sei, eu quro saber se o método format usa os parametros passado para o método getDateInstance() ou seja se eu fizer:

DateFormat dataFormatada = DateFormat.getDateInstance(DateFormat.MEDIUM, local); String data = dataFormatada.format(date); // O que ta na minha cabeça é que o método getDateInstance ta passando para format esses parametros, quero saber se é isso mesmo. [/quote]

É isso ai mesmo, o data será formatada conforme os parametros que voce especificar no metodo getDateInstance().

Eu quero entnder o funcionamento tipo, como os parametros do método getInstance() foi parar no método format?

 DateFormat dataFormatada = DateFormat.getDateInstance(DateFormat.MEDIUM, local);  
 String data = dataFormatada.format(date);

Vou começar a colar alguns pedaços dos fontes do Java.

    public final static DateFormat getDateInstance(int style,
                                                 Locale aLocale)
    {
        return get(0, style, 2, aLocale);
    }
...
    private static DateFormat get(int timeStyle, int dateStyle,
                                  int flags, Locale loc) {
        if ((flags & 1) != 0) {
            if (timeStyle < 0 || timeStyle > 3) {
                throw new IllegalArgumentException("Illegal time style " + timeStyle);
            }
        } else {
            timeStyle = -1;
        }
        if ((flags & 2) != 0) {
            if (dateStyle < 0 || dateStyle > 3) {
                throw new IllegalArgumentException("Illegal date style " + dateStyle);
            }
        } else {
            dateStyle = -1;
        }
        try {
            // Check whether a provider can provide an implementation that's closer 
            // to the requested locale than what the Java runtime itself can provide.
            LocaleServiceProviderPool pool =
                LocaleServiceProviderPool.getPool(DateFormatProvider.class);
            if (pool.hasProviders()) {
                DateFormat providersInstance = pool.getLocalizedObject(
                                                    DateFormatGetter.INSTANCE,
                                                    loc, 
                                                    timeStyle,
                                                    dateStyle,
                                                    flags);
                if (providersInstance != null) {
                    return providersInstance;
                }
            }

            return new SimpleDateFormat(timeStyle, dateStyle, loc);
        } catch (MissingResourceException e) {
            return new SimpleDateFormat("M/d/yy h:mm a");
        }
    }

Se você olhar os fontes direitinho, vai ver como é que os parâmetros foram parar lá. Dica: getDateInstance, em última instância, retorna um objeto da classe SimpleDateFormat.

rs é meio complexo entender esse cod, mas kkk eu sei que os parametros do getDateInstance foi para no format kkk, vlw ai.

Nao entendi qual a sua duvida. :?:

a duvida era saber como o parametro do metodo getDateInstance(DateFormat.MEDIUM, locale), vai para o método format(), que formata a data de acordo com o parametro, eu sei que de uma forma ou outra ele tem que ir para o método format() para poder formatar de acordo com o parametro.

Embora voce nao possa usar o contrutor diretamente, se observar o codigo do bezier.curve na linha 40 ele acessa o construtor passando os seus parametros e assim surge um objeto com as caracteristicas que voce passou, e quando voce chama o metodo format ele tem guardado no objeto as caracteristicas suas.