HELLO_MSG = Hello, everyone!
GOODBYE_MSG = Goodbye everyone!
And given:
public class ResourceApp {
public void loadResourceBundle() {
ResourceBundle
resource = ResourceBundle.getBundle("Greetings",Locale.US);
System.out.println(resource.getObject(1));
}
public static void main(String[] args) {
new ResourcesApp().loadResourceBundle();
}
}
What is the result?
A.
Compilation fails
B.
HELLO_MSG
C.
GOODGYE_NSG
D.
Hello, everyone!
E.
Goodbye everyone!
La risposta è A.
Infatti per come è scritto quel codice non compila
per due motivi :
1) Il
metodo getObject() di ResourceBundle accetta solo String.
2) Nel
new ResourcesApp() c’è un errore infatti il tipo ResourcesApp
non è definito.
Se invece si considera questo altro codice, in cui ResourcesApp
si sostituisce con ResourceApp (senza la s) e l’argomento al metodo getObject
si cambia da 1 ad “1” si ha una corretta compilazione:
import java.util.Locale;
import java.util.ResourceBundle;
public class ResourceApp {
public void loadResourceBundle() {
ResourceBundle
resource = ResourceBundle.getBundle("Greetings",Locale.US);
System.out.println(resource.getObject("1"));
}
public static void main(String[] args) {
new ResourcesApps().loadResourceBundle();
}
}
Per testare questo codice va creato un file di
proprietà Greetings :
con il seguente codice :
HELLO_MSG = Hello, everyone!
GOODBYE_MSG = Goodbye everyone!
In questo caso il codice restituisce una eccezione a
Runtime perché nel file di properties non esiste una risorsa con chiave “1”:
Exception in thread
"main" java.util.MissingResourceException: Can't find resource for bundle
java.util.PropertyResourceBundle, key 1
Il codice viene eseguito
correttamente invece nel caso di richiamo di una chiave esistente , ad esempio HELLO_MSG :
import java.util.Locale;
import java.util.ResourceBundle;
public class ResourceApp {
public void loadResourceBundle() {
ResourceBundle
resource = ResourceBundle.getBundle("Greetings",Locale.US);
System.out.println(resource.getObject("HELLO_MSG"));
}
public static void main(String[] args) {
new
ResourceApp().loadResourceBundle();
}
}
in questo caso l’uscita è : Hello, everyone!.
Riferimenti:

Nessun commento:
Posta un commento