Was ist der "einfachste" Weg für Sie, ein Singleton-Array (mit genau einem Element) in Java zu erstellen?Die beste Methode zum Erstellen von Singleton-Arrays
Antwort
Object [] singleton = { new SomeObject() };
Der üblicher Weg ist dies:
String[] arr = new String[]{"I am the one and only"};
Ich fürchte, es nicht viel einfacher als diese bekommen.
Edit: es tut:
String[] arr = {"I am the one and only"};
Dank aioobe ich dies immer wieder zu vergessen.
Natürlich, wenn Sie oft Array erstellen Sie eine Hilfsmethode erstellen können, die Dinge ein wenig einfacher macht:
public static <T> T[] asArray(T... items){
return items;
}
String[] arr = asArray("I am the one and only");
(Aber Sie bei der Kompilierung durchsetzen kann nicht, dass es ein Array wird mit nur einem Element)
Weiter würde ich ein Singleton-Array-Verfahren schreiben, aber Stephen beat me to that.
"Ich fürchte, es wird nicht viel einfacher als das.". In dieser Zeile können Sie 'new String []' entfernen :-) – aioobe
Um fair zu sein, ist die 'normale' Notation wirklich nicht so schwierig. –
@aioobe hinzugefügt, dass ändern, danke –
zu verwenden Dies sollte den Job
public SomeType[] makeSingletonArray(SomeType elem) {
return new SomeType[]{elem};
}
Eine generische Version dieses Verfahrens wäre etwas umständlich, da man es ein Class
Objekt als zusätzliche Parameter übergeben werden müßte.
Inline-Ausdruck der ist einfacher, und das würde ich normalerweise tun.
Sie können dies tun:
String[] a = Collections.
singletonList
("SingleElement").toArray();
Edit: Whoops! Das obige Beispiel kompiliert nicht. Wie im Kommentar erwähnt, kann dies getan werden entweder als:
Object[] a = Collections.singletonList("SingleElement").toArray();
Oder
String[] a = Collections.singletonList("SingleElement").toArray(new String[1]);
Kompiliert nicht. Muss entweder 'Object [] a = Collections.singletonList (" SingleElement ") sein toArray();' oder 'String [] a = Collections.singletonList (" SingleElement "). ToArray (neuer String [1]);' –
Enum-Lösung (anti reflektieren Angriff):
enum MySingleton{
INSTANCE(new String[]{"a","b"});
final String[] values;
private MySingleton(String[] values) {
this.values = values;
}
}
Referenz als:
MySingleton.INSTANCE;
+1 für den richtigen Weg, um einen echten Singleton auf der JVM zu machen – gpampara
Das OP fragt nicht nach einem Singleton (wie in einer Instanz des GOF-Musters), sondern nur nach einem Array mit einem Element (auch bekannt als Singleton-Array in Englisch wie die Singleton * -Methoden in Collections). Also ist Ihr {"a", "b"} kein Singleton-Array (es hat 2 Elemente), obwohl es sich um eine Instanz des Singleton-Musters handelt. – Eponymous
Wenn Ihr Projekt Apache Common bereits verwendet s lib, können Sie auf ArrayUtils.toArray()
Methode bleiben.
String[] arr = ArrayUtils.toArray("The string");
// or if using static import
String[] arr = toArray("The string");
Selbst bei Verwendung von statischen Import es noch ausführlicher als die akzeptierte Antwort:
String[] arr = {"The string"};
Aber es ist sehr handlich, wenn kompakte Arrayinitialisierungssyntax nicht erlaubt ist.
Einige Beispiele:
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);
}
Sie weitere Beispiele sich vorstellen kann.
Beachten Sie auch, dass die ArrayUtils.toArray()
kann eine beliebige Anzahl von Objekten in Array, nicht nur eine einzelne.
- 1. Die beste Methode zum Erstellen von Benutzer-Content-Management-Seiten
- 2. Was ist die beste Methode zum Erstellen von ClickOnce-Bereitstellungen?
- 3. Die beste Methode zum Erstellen von Kategorien Baum
- 4. Die beste Methode zum atomaren Erstellen von Dateien
- 5. Die beste Methode zum Speichern von Dateien
- 6. Die beste Methode zum Verwalten von Datenbankänderungen
- 7. Die beste Methode zum Floaten?
- 8. Die beste Methode zum Erstellen einer Hot-Pluggable-WCF-Servicebibliothek
- 9. Die beste Methode zum Erstellen einer mehrsprachigen Drupal 6-Website?
- 10. Die beste Methode zum Erstellen eines SQL Server-Rollback-Skripts?
- 11. Die beste Methode zum Erstellen einer Collage (in Java)
- 12. Die beste Methode zum Generieren eines Migrationszeitstempels
- 13. Die beste Methode zum Erstellen einer segmentierten Fortschrittsleiste?
- 14. Die beste Methode zum Speichern globaler Variablen
- 15. Die beste Methode zum Bereitstellen von Listen für Sharepoint 2010
- 16. Die beste Methode zum benutzerdefinierten Bearbeiten von Datensätzen in ASP.NET?
- 17. Die beste Methode zum Einbetten von Quellcode in OpenOffice.org-Präsentationen?
- 18. Die beste Methode zum Hinzufügen von Metadaten zu HTML-Elementen
- 19. Die beste Methode zum Bearbeiten von XML in .NET
- 20. Die beste Methode zum Speichern von Badge-Kriterien?
- 21. Was ist die beste Methode zum Indizieren von eindeutigen Textfeldern?
- 22. Die beste Methode zum Implementieren von View.OnClickListener in android
- 23. Die beste Methode zum Beenden der Anwendungsinstanz
- 24. Die beste Methode zum Abfragen von Speicherplatz auf dem Remoteserver
- 25. Die beste Methode zum Hinzufügen von Basisklassenwerten zur abgeleiteten Klasse?
- 26. Die beste Methode zum Implementieren von Repository Pattern?
- 27. Was ist die beste Java-Methode zum Erstellen von JSON/XML-REST-Webdiensten, die WCF ähnelt?
- 28. Beste Methode zum Speichern/Abrufen von Diensteigenschaften
- 29. Die beste Methode zum Ausführen eines Tools von ASP.Net Seite
- 30. Die beste Methode zum Validieren von WCF- und WebService-Methodenparameterwerten
Sie sollten wissen, dass bei Verwendung eines Arrays der Inhalt veränderbar ist. Erwägen Sie die Verwendung eines Singleton-Sets mit 'Collections.singletonSet (element)'. – whiskeysierra