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