Условный импорт Java
Как иметь условный импорт в Java, как у нас есть ifdefs
в C
Это то, что я намереваюсь достичь
ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
Ответы
Ответ 1
У вас нет условного импорта с java
Но вы можете условно использовать разные классы с тем же именем, используя полное имя
например:
if(useSql){
java.sql.Date date = new java.sql.Date()
}else{
java.util.Date date = new java.util.Date()
}
Ответ 2
У нас нет условного импорта в java
Ответ 3
На Java нет поддержки для этого.
Заметим, что #IFDEF выполняется на этапе предварительного процессора на С++. Для этого нет поддержки в Java.
То, что вы можете попробовать, это нечто вроде обработчика аннотаций, до того, как в JDK 1.5 были добавлены аннотации.
Кроме того, вы можете использовать аннотации для обработки во время компиляции.
Этот блог предоставляет вам некоторую информацию
Ответ 4
Java не поддерживает условный import
.
Ответ 5
То, что вы пытаетесь сделать, - это правильная идея, но вместо этого вы должны использовать mocks. Mockito - отличная библиотека для этого.
Парадигма немного отличается, но вы должны изучить модульное тестирование с насмешкой библиотеки и понять это, что позволит вам делать то, что вы пытаетесь, в лучшем (на мой взгляд) пути.
Ответ 6
Прекомпроцессор Java Comment поддерживает разделы префикса и постфикса в результирующем документе, и очень полезно создать секцию импорта классов, вы можете поместить строку импорта даже в середине вашего класса
//#ifdef FLAG
//+prefix
import some.class.Clazz;
//-prefix
Clazz.call();
//#endif
Ответ 7
Вы можете использовать традиционный оператор if, а затем вместо import do Class.forName("example.ExampleClass")
Это вернет объект Class
, который вы могли бы затем вызвать Class.newInstance()
on. Это позволит вам избежать ошибок времени компиляции для зависимостей, которые могут не существовать, а также сделать что-то похожее на условный импорт.