2014-09-01 14 views
8

Czytałem efektywną książkę Java i miałem pytanie dotyczące konwencji nazewnictwa dla metod, kiedy powinienem używać toType i asType? Na przykład mamy toString, toArray i mamy asList. Dlaczego nie nazwaliśmy go Listą zamiast używania asList?Konwencje nazewnictwa metod Java dla różnic typu i asType?

To brzmi jak idiota, ale jestem ciekawy różnic?

Przeczytałem to z innego wątku: "Jeśli metoda zwraca to samo wystąpienie, ale rzutowane na inny typ, użyj metody AsXXX .Jeśli metoda tworzy nową instancję niepowiązanego typu przy użyciu danych obiektu, użyj metody ToXXX." ale dlaczego różni się od tablicy do listy i listy do tablicy w Javie?

+0

Czy to oznacza, że ​​konwertuję listę na konwertuje tablicę na inny typ, ale z tablicy na listę, po prostu ją zawijam. To jest ta część, której nie rozumiem, dlaczego mieli dwie różne metody nawiązywania między sobą nawzajem? – amm

Odpowiedz

14

Różnicę między asX i toX można zilustrować jako Arrays.asList.

Arrays.asList pobiera tablicę i tworzy listę poparte tej tablicy:

Zwraca listę stałym rozmiarze poparte określonej tablicy. (Zmiany na zwróconej liście "przepisz" do tablicy.)

Nie tworzy niezależnej listy.

Z drugiej strony metody takie jak toString i toArray tworzą nowe wystąpienie niezależne od danych wejściowych, z których zostały utworzone.

Innymi słowy, asX przyjmuje obiekt jednego typu i tworzy widok tego obiektu innego typu. toX pobiera obiekt wejściowy i tworzy nowy obiekt innego typu, zainicjowany przez obiekt wejściowy.

+0

Jeszcze jedno, nie miałem możliwości zmiany, miałem na myśli dodanie nowego elementu, do zwróconej listy wyrzucił ten błąd "Wyjątek w wątku" główny "java.lang.UnsupportedOperationException \t w java.util.AbstractList.add (AbstractList.java:131) \t na java.util.AbstractList.add (AbstractList.java:91) "Ale masz rację Próbowałem dodać nowy element do tablicy i nadal mogę go mieć na liście, chociaż dodaję to po asList. – amm

+0

To ma teraz całkiem sens, wielkie dzięki :-) http://stackoverflow.com/questions/18389012/how-to-add-elements-in-list-when-used-arrays-listlist – amm

Powiązane problemy