xem xét ví dụ đơn giản mã sau đây:nhập tĩnh mà không cần tên gói
public class TestStaticImport {
static enum Branches {
APPLE,
IBM
}
public static void doSomething(Branches branch) {
if (branch == APPLE) {
System.out.println("Apple");
}
}
}
Nếu chúng tôi sẽ cố gắng để biên dịch mã này, chúng tôi sẽ nhận được thông báo lỗi:
java: cannot find symbol
symbol: variable APPLE
location: class TestStaticImport
này có thể được giải quyết bằng cách giới thiệu nhập tĩnh này enum
:
import static
... TestStaticImport.Branches.*
Nhưng trong thời điểm này mọi thứ không thể hiểu được (cho tôi) bắt đầu:
giải pháp này hoạt động tốt, mọi thứ đều tốt biên soạn, cho đến khi lớp TestStaticImport
sẽ được chuyển thành gói gốc trống, tức là không có bất kỳ
package blablabla;
ở đầu tệp java này;
Code: import static TestStaticImport.Branches.*;
được đánh dấu như mã hợp lệ trong IDEA Intellij của tôi (tên của IDE không quan trọng, chỉ cần cung cấp thông tin), nhưng khi tôi cố gắng biên dịch mã như sau lỗi xuất hiện:
java: package TestStaticImport does not exist
Vì vậy, có thực sự là hai câu hỏi:
1) câu hỏi chính: tại sao nó không thể import static
từ thư mục trống rỗng?
2) Cách khác (nếu có) cho phép tham chiếu mã vào các trường của enum chỉ sử dụng tên của chúng (ví dụ: APPLE
thay vì Branches.APPLE
), ngoại trừ nhập tĩnh?
P.S. Xin vui lòng, đừng nói với tôi, rằng các gói rỗng là phong cách xấu xí và vân vân. Câu hỏi này chỉ là vấn đề lý thuyết.
Tôi đã gặp phải vấn đề tương tự như bạn cho câu hỏi đầu tiên ... Theo như tôi có thể nhìn thấy nó là một hạn chế. – fge