Jaki jest "najprostszy" sposób, aby utworzyć singleton (z dokładnie jednym elementem) Tablica obiektów w Javie?Najlepszy sposób tworzenia tablicy singleton
Odpowiedz
Object [] singleton = { new SomeObject() };
Standardowy sposób jest taki:
String[] arr = new String[]{"I am the one and only"};
Obawiam się, że nie ma się o wiele prostsze.
Edit: robi:
String[] arr = {"I am the one and only"};
Dzięki aioobe, Ciągle zapominam to.
Oczywiście jeśli często utworzyć tablicę można utworzyć metody pomocnika, który sprawia, że rzeczy nieco prostsze:
public static <T> T[] asArray(T... items){
return items;
}
String[] arr = asArray("I am the one and only");
(Ale nie można egzekwować w czasie kompilacji, że będzie tablicą tylko z jednego elementu)
Następny miałem zamiar napisać metodę singleton tablicy, ale Stephen beat me to that.
"Obawiam się, że nie jest to o wiele prostsze niż to.". W tym wierszu możesz usunąć 'new String []' :-) – aioobe
Aby być sprawiedliwym, "normalna" notacja naprawdę nie jest tak trudna. –
@aioobe dodał, że zmiana, dzięki –
To powinno załatwić sprawę
public SomeType[] makeSingletonArray(SomeType elem) {
return new SomeType[]{elem};
}
generycznej wersji tej metody byłoby dość niewygodne w użyciu, ponieważ trzeba by przekazać mu Class
przedmiot jako dodatkowy parametr.
Podkreślenie wyrażenia SomeType[]{elem}
jest prostsze i tak zwykle robiłbym to.
Można to zrobić:
String[] a = Collections.
singletonList
("SingleElement").toArray();
EDIT: Whoops! Powyższy przykład się nie kompiluje. Jak podano w komentarzu, można to zrobić albo jak:
Object[] a = Collections.singletonList("SingleElement").toArray();
Albo
String[] a = Collections.singletonList("SingleElement").toArray(new String[1]);
nie kompiluje. Musi to być 'Object [] a = Collections.singletonList (" SingleElement "). ToArray();' lub 'String [] a = Collections.singletonList (" SingleElement "). ToArray (nowy ciąg [1]);' –
rozwiązania enum (anty odzwierciedlić ataku):
enum MySingleton{
INSTANCE(new String[]{"a","b"});
final String[] values;
private MySingleton(String[] values) {
this.values = values;
}
}
odniesienie go jako:
MySingleton.INSTANCE;
+1 dla poprawnego sposobu na utworzenie prawdziwego singletonu na JVM – gpampara
OP nie pyta o Singleton (jak w przypadku wzoru GOF), ale tylko o to, jak utworzyć tablicę z jednym elementem (znanym również jako tablica singletona w języku angielskim, na przykład metody singleton * w kolekcjach). Tak więc twoje {"a", "b"} nie jest tablicą singleton (ma 2 elementy), mimo że jest przykładem wzorca Singleton. – Eponymous
Jeśli Twój projekt korzysta już z Apache Common s lib, możesz trzymać się metody ArrayUtils.toArray()
.
String[] arr = ArrayUtils.toArray("The string");
// or if using static import
String[] arr = toArray("The string");
Nawet jeśli używasz import statyczny to jest jeszcze bardziej gadatliwy niż przyjętym odpowiedź:
String[] arr = {"The string"};
Ale chodzi bardzo przydatna, gdy składnia initializer zwarty szyk nie jest dozwolone.
Kilka przykładów:
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);
}
można sobie wyobrazić jakiekolwiek inne przykłady siebie.
Należy również zauważyć, że ArrayUtils.toArray()
może zawijać dowolną liczbę obiektów do tablicy, a nie tylko jedną.
- 1. Najlepszy sposób tworzenia ikony aplikacji
- 2. Najlepszy sposób tworzenia ruchomej mapy
- 3. Najlepszy sposób tworzenia funkcji oddzwaniania
- 4. Najlepszy sposób tworzenia Midnight DateTime w C#
- 5. Najlepszy sposób tworzenia ViewModel w MVVM
- 6. Jaki jest najlepszy sposób tworzenia wewnętrznych produktów?
- 7. Jaki jest najlepszy sposób tworzenia wdrożeń ClickOnce
- 8. Jaki jest najlepszy sposób tworzenia wyszukiwania whois?
- 9. Fabryczna metoda tworzenia instancji singleton
- 10. Najlepszy sposób usunąć „kolumny” z tablicy wielowymiarowej
- 11. Jaki jest najlepszy sposób wyczyszczenia tablicy łańcuchów?
- 12. Najlepszy sposób konwertowania tablicy obiektów na obiekt?
- 13. Najlepszy sposób na przesunięcie tablicy w C?
- 14. Najlepszy sposób tworzenia klasy połączenia statycznego mysql PDO?
- 15. najlepszy sposób tworzenia/dzielenia łańcucha znaków na znaczniki
- 16. jQuery Mobile najlepszy sposób tworzenia pop-upu i zawartości dynamicznie
- 17. Jaki jest najlepszy sposób tworzenia interaktywnych prototypów aplikacji?
- 18. Jaki jest najlepszy sposób tworzenia zmiennych globalnych w CakePHP?
- 19. Jaki jest najlepszy sposób tworzenia prostych funkcji filtru w javascript?
- 20. Jaki jest najlepszy sposób tworzenia i usuwania DbContext w MVC?
- 21. Najlepszy sposób tworzenia spójności ogólnej/metody dla sort.data.frame?
- 22. Jaki jest najlepszy sposób tworzenia aliasu do atrybutów w Ruby?
- 23. Jaki jest najlepszy sposób tworzenia struktur wiadomości w Javie?
- 24. jaki jest najlepszy sposób przekonwertować hash rubinowy do tablicy
- 25. Jak utworzyć Singleton w C?
- 26. Jaki jest poprawny sposób tworzenia tablicy asocjacyjnej w VB.NET?
- 27. Najlepszy sposób na usunięcie wszystkich elementów z tablicy ActionScript?
- 28. Jaki jest najlepszy sposób na usunięcie elementu tablicy w PHP?
- 29. Jaki jest najlepszy sposób przechowywania tablicy w relacyjnej bazie danych?
- 30. Jaki jest najlepszy sposób aktualizacji obiektu w tablicy w ReactJS?
Powinieneś wiedzieć, że podczas korzystania z tablicy zawartość jest zmienna. Rozważ użycie zestawu singleton w 'Collections.singletonSet (element)'. – whiskeysierra