Làm thế nào để có hàng nhập khẩu có điều kiện trong Java như chúng ta có ifdefs
trong C Đây là những gì tôi có ý định để đạt đượcJava có điều kiện nhập khẩu
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
Làm thế nào để có hàng nhập khẩu có điều kiện trong Java như chúng ta có ifdefs
trong C Đây là những gì tôi có ý định để đạt đượcJava có điều kiện nhập khẩu
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
Bạn không cần phải nhập khẩu có điều kiện với java
Nhưng bạn có điều kiện có thể sử dụng các lớp học khác nhau với cùng một tên sử dụng tên đầy đủ
ví dụ:
if(useSql){
java.sql.Date date = new java.sql.Date()
}else{
java.util.Date date = new java.util.Date()
}
Điều này chỉ thực sự mang lại lợi ích nếu cả hai Ngày đã triển khai một giao diện chung. – gdw2
Giả sử cả hai thư viện đó là các JAR bên ngoài. Trình biên dịch sẽ bao gồm cả các JAR đó trong mã được biên dịch nếu 'useSql' là' static final'? –
Có. nó sẽ. tuy nhiên bạn vẫn cần phải cung cấp nó trong thời gian chạy –
Chúng tôi không nhập khẩu có điều kiện trong java
Java Không hỗ trợ điều kiện import
.
Không có hỗ trợ cho điều này tại Java.
Hãy nhớ rằng #IFDEF được thực hiện ở giai đoạn tiền xử lý tại C++ - Không hỗ trợ Java cho điều đó.
Những gì bạn có thể thử và có thứ gì đó giống như bộ xử lý chú thích, trước khi các chú thích ngày được giới thiệu trong JDK 1.5.
Ngoài ra, bạn có thể sử dụng chú thích để xử lý trong thời gian biên dịch.
This blog cung cấp cho bạn một số thông tin
Điều bạn đang cố gắng làm là một ý tưởng hợp lệ, nhưng bạn nên sử dụng mocks thay thế. Mockito là một thư viện tuyệt vời cho điều đó.
Mô hình có một chút khác biệt, nhưng bạn nên nhìn vào thử nghiệm đơn vị với thư viện giả mạo và hiểu được điều đó, điều này sẽ cho phép bạn làm những gì bạn đang cố gắng theo cách tốt hơn .
Java Comment Preprocessor hỗ trợ tiền tố và hậu tố phần trong tài liệu kết quả và nó rất hữu ích để tạo thành phần lớp nhập khẩu, bạn có thể đặt chuỗi nhập khẩu thậm chí ở giữa lớp học của bạn
//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
Clazz.call();
//#endif
Bạn có thể sử dụng một truyền thống câu lệnh if và sau đó thay vì nhập làm Class.forName("example.ExampleClass")
Điều đó sẽ trả lại đối tượng Class
mà sau đó bạn có thể gọi Class.newInstance()
vào. Nó sẽ cho phép bạn tránh các lỗi biên dịch thời gian cho các phụ thuộc có thể không tồn tại cũng như làm một cái gì đó tương tự như nhập khẩu có điều kiện.
Tập hợp con có thể có của: http://stackoverflow.com/questions/4526113/java-conditional-compilation-how-to-prevent-code-chunks-to-be-compiled –