2012-08-26 30 views
7

Nghiên cứu Java, tôi đã nghĩ về một thuộc tính khá khó hiểu của nhiều hướng dẫn. Hãy xem xét hai nhập khẩu sau đây từ một hướng dẫn mẫu:Không nên "nhập foo. *" Cũng bao gồm gói phụ "foo.bar. *"?

import java.awt.*; 
import java.awt.event.*; 

Dòng đầu tiên rõ ràng là nhập khẩu các gói java.awt, và gói con thứ hai một AWT của. Nhưng không phải tiểu hành tinh bao gồm tất cả các gói phụ? Do đó, dòng một nên làm các trick-line hai không nên cần thiết? Nếu không: thì mục đích/sử dụng thực sự của asterix là gì?

Ví dụ, bằng cách sử dụng SELECT * FROM foo trong MySQL, hãy chọn TẤT CẢ các trường từ bảng, có lẽ tôi ngu ngốc khi cho rằng trường hợp này là tự nhiên.

+1

Nó được sử dụng để nhập tất cả các lớp trong gói đã cho (nghĩa là tất cả các lớp trong 'java.awt'), không phải là các gói con và các lớp của chúng. – Baz

Trả lời

13

Không, gói nào được chụp chung. Mặc dù thường hữu ích khi nghĩ về chúng theo cấp bậc, không có khái niệm nào trong ngôn ngữ Java hoặc biên dịch nói rằng java.awt.eventthuộc vềjava.awt.

So sánh của bạn với các bảng SQL không hoàn toàn đúng vì không có thứ gì như một bảng con trong cơ sở dữ liệu SQL. Thay vào đó, hãy tưởng tượng bạn có một bảng đại diện cho mọi tầng lớp của bạn, với các mục sau:

ID | Package | Name 
-------------------------- 
1 | awt  | SomeClassName1 
2 | awt.event | SomeClassName2 

Bây giờ, nếu bạn muốn để có được lớp AWT, bạn muốn nói:

SELECT * FROM MyTable WHERE Package = 'awt' 

Bạn sẽ không mong đợi điều này cung cấp cho bạn cả hai mục nhập, chỉ vì tên gói bắt đầu bằngawt, phải không?

+0

Thực sự, câu trả lời thực sự tốt! Cảm ơn rất nhiều! – Zar

0

Xem câu trả lời của tôi here (và nhận xét của tôi). Ký tự đại diện chỉ có 1 cấp độ sâu, không được đưa vào gói phụ

0

Mỗi tên gói ("a.b.c") là một gói riêng biệt. Hai gói có tiền tố đặt tên tương tự (ví dụ: "a.b.c" và "a.b.d") là các gói riêng biệt cho ngôn ngữ, cả cho các không gian tên và kiểm soát truy cập.

Đối với con người, tất nhiên, điều này thể hiện mối quan hệ có thể có giữa các gói.

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