Nếu bạn nhìn vào việc thực hiện các ví dụ Boolean::getBoolean
bạn sẽ thấy rằng các loại wrapper đơn giản là cung cấp một số tiện cho việc đọc System::getProperty
:
public static boolean getBoolean(String name) {
boolean result = false;
try {
result = toBoolean(System.getProperty(name));
} catch (IllegalArgumentException e) {
} catch (NullPointerException e) {
}
return result;
}
private static boolean toBoolean(String name) {
return ((name != null) && name.equalsIgnoreCase("true"));
}
Các phương pháp trên chỉ là một thuận tiện để lấy một tài sản đánh máy hoặc một giá trị mặc định nếu giá trị đã cho là bất hợp pháp.
Theo kiến thức của tôi, chỉ có các loại trình bao bọc Boolean
, Long
và Integer
cung cấp các phương pháp như vậy. (Loại String
chẳng hạn như not offer such a method, khác với câu hỏi của bạn. ') Lý trí có lẽ là một thực tế rằng các kiểu nguyên thủy này là phổ biến cho các thuộc tính được bàn giao như một thuộc tính hệ thống. Ví dụ, bạn sẽ không yêu cầu người dùng cung cấp một cấu trúc XML bằng dòng lệnh, chỉ để đặt tên cho một ví dụ.
Đọc thuộc tính hệ thống là yêu cầu được lan truyền trên toàn bộ thư viện lớp Java. Người ta có thể đặt một tập hợp các phương thức tiện lợi tương tự vào một gói nội bộ nhưng tôi đoán rằng các tác giả của các thư viện JDK coi đây là một yêu cầu cũng có liên quan đến người dùng bên ngoài JCL và công khai nó. Cuối cùng, các loại trình bao bọc có nghĩa là cung cấp một số tiện lợi để xử lý các nguyên thủy. Tôi sẽ không biết một nơi tốt hơn so với các loại wrapper để đưa những phương pháp này.
Như được chỉ ra bởi Pablo, giá trị thập phân không được coi là một giá trị tốt cho thuộc tính dòng lệnh làm dấu tách thập phân, nó phụ thuộc vào ngôn ngữ. Ngoài ra, tôi không thể nghĩ về một tài sản như vậy được sử dụng trong JCL. Điều này giải thích tại sao phương thức tương tự bị thiếu trong số Float
và Double
. Ngoài ra, vì byte
, short
và char
được đại diện tại int
khi chạy, tôi sẽ không thấy trường hợp sử dụng cụ thể cho các giá trị này hoặc điều gì sẽ giải thích sự vắng mặt của chúng.
Nguồn
2014-07-03 15:06:14
Tôi luôn tự hỏi tại sao Boolean, Integer và Long có các phương thức đó, vì chúng không thực sự liên quan đến chức năng của các lớp liên quan của chúng. Tôi nghi ngờ họ là tai nạn của lịch sử và sẽ không được cung cấp nếu nó đã được thực hiện trên tất cả từ đầu. Chúng thực sự thuộc về System hoặc trong một số thuộc tính riêng biệt. –
@HotLicks Chính xác suy nghĩ của tôi. Những phương pháp đó được gắn vào các lớp sai, và được đặt tên sai lạc. –