Подтвердить что ты не робот

Условный импорт Java

Как иметь условный импорт в Java, как у нас есть ifdefs в C Это то, что я намереваюсь достичь

ifdef TEST
import com.google.mystubs.swing;
elif
import javax.swing.*;
endif
4b9b3361

Ответ 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. Это позволит вам избежать ошибок времени компиляции для зависимостей, которые могут не существовать, а также сделать что-то похожее на условный импорт.