Preparare la certificazione Java Programmer OCPJP7: Localization

LOCALIZATION

  • static Locale getDefault() è il metodo che serve per recuperare il Locale impostato di default sulla JVM installata.
  • Per settare il Locale di default si usa il metodo setDefault della classe Locale, che può essere utilizzato in 2 modi:
    • utilizzando l’oggetto statico della classe Locale
      Locale.setDefault(Locale.CANADA_FRENCH);
    • Istanziando un oggetto Locale e passandolo come parametro al metodo:
      Locale newLoc = new Locale(“fr”,”CA”,””);
      Locale.setDefault(newLoc);
  • Un oggetto di tipo Locale viene rappresentato con una stringa di questo tipo:
    • Language + “_” + country + “_” + (variant + “_#” | “#”) + script + “_” + extensions
  • static Locale[] getAvailableLocales() restituisce tutti i Locale disponibili con la JVM installata.
  • I vari metodi get della classe Locale si dividono in quelli che restituiscono:
    • Codici: getLanguage(), getCountry(), getVariant()
    • Nomi: getDisplayLanguage(), getDisplayCountry(), getDisplayVariant()
  • Ci sono 2 modi per utilizzare un Locale:
    • Locale.setDefault(Locale.CANADA_FRENCH);
    • Locale newLocale = new Locale(“fr”,”CA”,””);
      Locale.setDefault(newLocale);
  • ResourceBundle è una classe astratta. Da essa ereditano:
    • ListResourceBundle
      Fornisce un metodo getContents() che restituisce un Object[][]
    • PropertyResourcebundle
      Gestisce i Locale sottoforma di file di properties
  • Esempio di utilizzo di NumberFormat:
    • Long n = 1_000_000L;
      NumberFormat germanFormat = NumberFormat.getinstance(Locale.GERMANY);
      String locN = germanFormat.format(n);
  • Il metodo parse() della classe NumberFormat, in caso di fallimento del parsing della stringa, scatena una ParseException.
  • Il costruttore della classe Locale prende 3 parametri: di tipo String:
    • Locale loc = new Locale(“it”, “”,””);
  • Il metodo getContents() dichiarato nella classe ListResourceBundle è definito dalla signature:
    • protected abstract Object[][] getContents();
  • java.text.Format è una classe abstract che supporta la formattazione delle informazioni sensibili di un’area geografica (Locale) come le date, le ore o le valute.
  • java.text.NumberFormat deriva da Format ed è la classe utilizzata per formattare i numeri o la valuta di un Locale.
  • java.text.DateFormat deriva da Format ed è la classe utilizzata per formattare le date ed il tempo di un Locale.
  • La classe java.text.SimpleDataFormat permette di definire dei pattern personalizzati per il processamento di date e tempo di un Locale.
  • java.util.ResourceBundle è la classe base ed è un’astrazione di resource bundle che contiene oggetti specifici di un Locale.
  • java.util.ListResourceBundle definisce il metodo getKeys() che ritorna un enumerazione delle chiavi contenute nel resource bundle.
  • Per accedere ad un membro static public final della classe Locale si fa ad esempio Locale.US
  • Non esiste un costruttore della classe Locale che prende come parametro un altro oggetto di tipo Locale
  • I possibili costruttori per la classe Locale sono:
    • Locale loc1 = new Locale(“en”)
    • Locale loc2 = new Locale(“en”, “in”)
    • Locale loc3 = new Locale(“th”,”TH”,”TH”)
    • Praticamente i costruttori prevedono uno, due o tre parametri di tipo String
  • Nella creazione di un oggetto Locale si può passare qualsiasi Stringa. Se poi si stampano i valori dell’oggetto, vengono stampati tali valori delle stringhe.
    • La creazione di un Locale con stringhe non esistenti non scatena alcun tipo di eccezione
  • I caratteri per la formattazione delle date sono:
    • y -> anno
    • M -> mese dell’anno
    • w -> settimana dell’anno
    • E -> nome del giorno
    • u -> numero del giorno della settimana (1-7)
    • d -> numero del giorno del mese
    • Esempio: “d ‘(‘E’)’ MMM, yyyy” produce 28 (Sun) Oct, 2014
  • Nelle stringhe per la formattazione delle date, il carattere ‘E’ indica il giorno della settimana e nella forma ‘EEEE’ indica l’intera dicitura del giorno, ad esempio ‘Friday’
  • Un altro metodo per creare un Locale è utilizzando il metodo forLanguageTag(String langTag)
  • Il metodo getObject della classe ResourceBundle prende come parametro una String che rappresenta la key dell’oggetto da recuperare:
    • Object getObject(String key)
  • Il metodo parse() della classe NumberFormat NON utilizza il limite di cifre decimali settato con il metodo setMaximumFractionDigits(2)
    • Tale limite viene invece utilizzato dal metodo format() che viene utilizzato per stampare in output i valori
This entry was posted in $1$s. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *