Quel est le moyen le plus simple pour vous de créer un tableau d'objets singleton (avec exactement un élément) en Java ?
Réponses
Trop de publicités?La méthode standard est la suivante :
String[] arr = new String[]{"I am the one and only"};
J'ai bien peur que ce ne soit pas plus simple que ça.
Edit : c'est le cas :
String[] arr = {"I am the one and only"};
Merci aioobe, j'oublie toujours ça.
Bien sûr, si vous créez souvent des tableaux, vous pouvez créer une méthode d'aide qui simplifie un peu les choses :
public static <T> T[] asArray(T... items){
return items;
}
String[] arr = asArray("I am the one and only");
(Mais vous ne pouvez pas imposer au moment de la compilation qu'il s'agira d'un tableau avec un seul élément).
Ensuite, j'allais écrire une méthode de tableau singleton, mais Stephen m'a battu à ce sujet. .
Si votre projet utilise déjà la librairie Apache Commons, vous pouvez vous en tenir à ArrayUtils.toArray()
méthode.
String[] arr = ArrayUtils.toArray("The string");
// or if using static import
String[] arr = toArray("The string");
Même en utilisant l'importation statique, cela reste plus verbeux que la réponse acceptée :
String[] arr = {"The string"};
Mais il est très pratique lorsque la syntaxe de l'initialisateur de tableau compact n'est pas autorisée.
Quelques exemples :
someMethod(toArray("The string"), /* other params */);
return toArray("The string");
@DataProvider
public Object[][] someDataProvider() {
return rangeClosed(-12, +12)
.map(HOURS::toMillis).boxed()
.map(ArrayUtils::toArray)
.toArray(Object[][]::new);
}
Vous pouvez imaginer vous-même d'autres exemples.
Notez également que le ArrayUtils.toArray()
peut envelopper un nombre arbitraire d'objets dans un tableau, et pas seulement un seul.
Cela devrait faire l'affaire
public SomeType[] makeSingletonArray(SomeType elem) {
return new SomeType[]{elem};
}
Une version générique de cette méthode serait quelque peu difficile à utiliser, car il faudrait lui passer un fichier Class
en tant que paramètre supplémentaire.
Mise en ligne de la SomeType[]{elem}
est plus simple, et c'est ainsi que je procéderais normalement.
- Réponses précédentes
- Plus de réponses