Tout en étudiant java Gold, je voulais comprendre l'externalisation des informations et divers fichiers de propriétés à l'aide d'exemples de code, j'ai donc écrit et exécuté le code dans un environnement de développement intégré.
Cependant, peu importe combien j'essaye, j'obtiens une MissingResoueceException.
Pourquoi….
À la suite d'essais et d'erreurs en jetant un coup d'œil sur l'erreur d'exécution, j'ai pu connaître les points à noter. Ce qui suit est un mémorandum.
MyResource.java
package com.example.Locale.properties;
import java.util.ListResourceBundle;
public class MyResource extends ListResourceBundle{
private final static String resources[][] = {
{"helloworld", "Hello, World!"},
{"key","This is MyResource's key!"}
};
@Override
protected Object[][] getContents() {
return resources;
}
}
Je voudrais obtenir la "clé" décrite dans le code ci-dessus dans la classe d'exécution.
De plus, puisque ListResourceBundle est une classe abstraite, il est essentiel d'implémenter la méthode abstraite "getContents".
Par exemple, supposons que l'exemple de code suivant soit affiché.
ResourceBundle rb = ResourceBundle.getBundle("MyResource");
Cependant, je ne pouvais pas bien comprendre cela.
À la suite d'une enquête d'une petite heure, Kuromoto a utilisé pour étudier ([Thorough capture Java SE 8 Gold problem collection](https://www.amazon.co.jp/%E5%BE%B9%E5%BA%95] % E6% 94% BB% E7% 95% A5-Java-Gold-% E5% 95% 8F% E9% A1% 8C% E9% 9B% 86-1Z0-809 / dp / 4295000035 / ref = asc_df_4295000035 /? = jpo-22 & linkCode = df0 & hvadid = 288845875882 & hvpos = 1o1 & hvnetw = g & hvrand = 1789597220371198337 & hvpone = & hvptwo = & hvqmt = / hvdev = c & hvdvcmdl = & hvlarg1 = & hvlarg1 = c & hvdvcmdl = & hvlarg1 = & hvlarg1 C'était.
[Attention] Si la classe du bundle de ressources est ** incluse dans le package **, n'oubliez pas de la qualifier avec le nom du package.
Autrement dit, le nom à décrire dans getBundle devait être un nom complet comprenant le nom du package.
Dans le code ci-dessus, la classe MyResource devait être dans le package par défaut. Cependant, comme il a été réellement défini dans le package, vous devez déplacer le fichier ou l'écrire entre parenthèses avec un nom complet.
Ci-dessous, une partie de la classe d'exécution décrite avec le nom complet et le résultat de l'exécution sont répertoriés.
Main.java
//Décrivez le nom de la classe de ressources comme un nom qualifié complet.
ResourceBundle rb = ResourceBundle.getBundle("com.example.Locale.properties.MyResource");
String message = rb.getString("key");
System.out.println(message);
This is MyResource's key!
Comme je ne travaille pas réellement sur le terrain en raison de problèmes physiques et mentaux, le contenu peut être incorrect ou démodé, mais si je le remarque ou le découvre à l'avenir, je l'écrirai sous forme de mémorandum. J'aimerais venir.
Je vous serais reconnaissant de bien vouloir commenter vos expériences ou suggestions réelles.
Merci pour la lecture.
Recommended Posts