2014-09-01 17 views
8

Tôi đã đọc cuốn sách Java hiệu quả và tôi có một câu hỏi về quy ước đặt tên cho các phương thức, Khi nào tôi nên sử dụng toType và asType? Ví dụ chúng ta có toString, toArray và chúng ta có asList. Tại sao chúng tôi không gọi nó là toList thay vì sử dụng asList?Quy ước đặt tên phương thức Java có sự khác biệt về loại và asType?

Nghe có vẻ ngốc nghếch nhưng tôi chỉ tò mò về sự khác biệt?

Tôi đọc điều này từ chủ đề khác nhau, "Nếu phương thức trả về cùng một thể hiện nhưng được truyền sang kiểu khác, hãy sử dụng phương thức AsXXX. Nếu phương thức xây dựng thể hiện mới của loại không liên quan bằng cách sử dụng dữ liệu đối tượng, hãy sử dụng phương thức ToXXX." nhưng tại sao nó khác với mảng vào danh sách và danh sách thành mảng trong Java?

+0

Điều này có nghĩa là khi tôi chuyển đổi danh sách thành mảng chuyển thành loại khác nhưng từ mảng thành danh sách, chúng chỉ bao bọc nó. Đây là phần mà tôi không hiểu tại sao họ có hai cách khác nhau trong việc chuyển đổi giữa mỗi người khác? – amm

Trả lời

14

Sự khác biệt giữa asXtoX có thể được minh họa bằng Arrays.asList.

Arrays.asList mất một mảng và tạo ra một danh sách được hỗ trợ bởi mảng:

Trả về một danh sách kích thước cố định được hỗ trợ bởi các mảng được chỉ định. (Các thay đổi đối với danh sách được trả về "ghi thông qua" vào mảng.)

Nó không tạo danh sách độc lập.

Mặt khác, các phương pháp như toStringtoArray tạo một phiên bản mới độc lập với đầu vào mà từ đó nó được tạo.

Nói cách khác, asX lấy đối tượng của một loại và tạo chế độ xem đối tượng đó thuộc một loại khác. toX lấy một đối tượng đầu vào và tạo một đối tượng mới của một loại khác, được khởi tạo bởi đối tượng đầu vào.

+0

Một điều nữa, tôi không có khả năng thay đổi, tôi có nghĩa là thêm phần tử mới vào danh sách trả về, nó sẽ đưa ra lỗi "Ngoại lệ trong chuỗi" chính "java.lang.UnsupportedOperationException \t tại java.util.AbstractList.add (AbstractList.java:131) \t tại java.util.AbstractList.add (AbstractList.java:91) "Nhưng bạn đã chính xác tôi đã cố gắng thêm phần tử mới vào mảng và vẫn còn tôi có thể có nó trong danh sách mặc dù tôi thêm nó sau asList. – amm

+0

Nó hoàn toàn có ý nghĩa bây giờ, cảm ơn rất nhiều :-) http://stackoverflow.com/questions/18389012/how-to-add-elements-in-list-when-used-arrays-aslist – amm

Các vấn đề liên quan