Импорт классов из папки src для тестирования junit в Intellij [duplicate]

Нет, вы не можете выбрать родителя только в css.

Но поскольку у вас уже есть класс .active, не было бы легче перенести этот класс на li (вместо этого из a)? Таким образом, вы можете получить доступ только к li и a только через css.

86
задан Viorel Florian 28 October 2016 в 16:28
поделиться

4 ответа

Вы не можете использовать классы в пакете по умолчанию из именованного пакета. ( Технически вы можете, как показано в ответе от Sharique Abdullah через API отражения, классы , но из неназванного пространства имен не входят в область импорта в декларации импорта )

До J2SE 1.4 вы могли импортировать классы из пакета по умолчанию, используя синтаксис, подобный этому:

import Unfinished;

Это больше не разрешено . Таким образом, для доступа к классу пакетов по умолчанию изнутри упакованного класса требуется переместить класс пакета по умолчанию в собственный пакет.

Если у вас есть доступ к источнику, сгенерированному groovy, необходимо выполнить некоторую пост-обработку переместите файл в выделенный пакет и добавьте эту директиву «package» в начале.


Обновление 2014: ошибка 6975015 для JDK7 и JDK8 описать четную stricter запрет на импорт из неназванного пакета.

TypeName должно быть каноническим именем типа класса, типа интерфейса, типа перечисления или типа аннотации. Этот тип должен быть либо членом именованного пакета, либо членом типа, у которого самый лексически закрытый тип является членом именованного пакета, или возникает ошибка времени компиляции.

117
ответ дан Community 19 August 2018 в 14:55
поделиться
  • 1
    Как я уже объяснял другим людям, пакет по умолчанию является гражданином второго сорта в мире Java. Просто не делай этого. :-) – Chris Jester-Young 12 November 2008 в 13:58
  • 2
    Кажется, мне нужно изучить Groovy (в очень ограниченном сроке проекта) или код в пакете по умолчанию. :-( – Mnementh 12 November 2008 в 14:02
  • 3
    @ ChrisJester-Young, если да, то почему это в первую очередь? ошибка проектирования? – Pacerier 18 October 2011 в 13:32
  • 4
    Почему он устарел? – Suzan Cioc 18 January 2014 в 16:09
  • 5
    @SuzanCioc вы имеете в виду: «почему после J2SE1.4 вы больше не можете получить доступ к пакету по умолчанию?» – VonC 18 January 2014 в 16:33

На самом деле вы можете.

Используя API отражений, вы можете получить доступ к любому классу. По крайней мере, я смог:)

Class fooClass = Class.forName("FooBar");
Method fooMethod = fooClass.getMethod("fooMethod", String.class);

String fooReturned = (String)fooMethod.invoke(fooClass.newInstance(), "I did it");
58
ответ дан Holger 19 August 2018 в 14:55
поделиться
  • 1
    Для Scala работает следующий код: val bar = "hi"; val fooClass = Class.forName("FooClass"); val fooMethod = fooClass.getMethod("foo", classOf[Array[String]]); val fooReturned = fooMethod.invoke(fooClass.newInstance(), Array(bar)); – Jus12 14 August 2012 в 09:58
  • 2
    Отличный ответ, +1. Поскольку вопрос был отличный, однако, вы можете использовать утиную печать (например, трубку, я думаю) ... Class.forName("FooBar").newInstance().fooMethod("I did it") – Bill K 16 October 2014 в 01:47

Вы можете использовать пакеты в коде Groovy, и все будет работать нормально.

Это может означать небольшую реорганизацию кода под grails-app и немного боль сначала, но в проекте с большими граалями просто имеет смысл организовать вещи в пакетах. Мы используем соглашение об именах стандартных пакетов Java com.foo.<app>.<package>.

Наличие всего в пакете по умолчанию становится препятствием для интеграции, как вы находите.

Контроллеры, похоже, Артефакт Grails (или артефакт), который сопротивляется помещению в пакет Java. Наверное, я пока еще не понял Convention. ; -)

3
ответ дан Ken Gentle 19 August 2018 в 14:55
поделиться

Используйте jarjar , чтобы переупаковать файл jar со следующим правилом:

rule * <target package name>.@1

Все классы в пакете по умолчанию исходного файла jar перейдут в целевой пакет, таким образом, имеют доступ.

6
ответ дан Sean 19 August 2018 в 14:55
поделиться
  • 1
    демонстрация того, как использовать jarjar, была бы замечательной – BiGGZ 2 March 2017 в 22:34
  • 2
    @BiGGZ: см. Файл README.md в jarjar github repo, чтобы узнать, как использовать jarjar с помощью ant, gradle или командной строки. – Lucidiot 12 October 2017 в 09:14
Другие вопросы по тегам:

Похожие вопросы: