Нет, вы не можете выбрать родителя только в css.
Но поскольку у вас уже есть класс .active
, не было бы легче перенести этот класс на li
(вместо этого из a
)? Таким образом, вы можете получить доступ только к li
и a
только через css.
Вы не можете использовать классы в пакете по умолчанию из именованного пакета. ( Технически вы можете, как показано в ответе от Sharique Abdullah через API отражения, классы , но из неназванного пространства имен не входят в область импорта в декларации импорта )
До J2SE 1.4 вы могли импортировать классы из пакета по умолчанию, используя синтаксис, подобный этому:
import Unfinished;
Это больше не разрешено . Таким образом, для доступа к классу пакетов по умолчанию изнутри упакованного класса требуется переместить класс пакета по умолчанию в собственный пакет.
Если у вас есть доступ к источнику, сгенерированному groovy, необходимо выполнить некоторую пост-обработку переместите файл в выделенный пакет и добавьте эту директиву «package» в начале.
Обновление 2014: ошибка 6975015 для JDK7 и JDK8 описать четную stricter запрет на импорт из неназванного пакета.
blockquote>
TypeName
должно быть каноническим именем типа класса, типа интерфейса, типа перечисления или типа аннотации. Этот тип должен быть либо членом именованного пакета, либо членом типа, у которого самый лексически закрытый тип является членом именованного пакета, или возникает ошибка времени компиляции.
На самом деле вы можете.
Используя API отражений, вы можете получить доступ к любому классу. По крайней мере, я смог:)
Class fooClass = Class.forName("FooBar");
Method fooMethod = fooClass.getMethod("fooMethod", String.class);
String fooReturned = (String)fooMethod.invoke(fooClass.newInstance(), "I did it");
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
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
. ; -)
Используйте jarjar , чтобы переупаковать файл jar со следующим правилом:
rule * <target package name>.@1
Все классы в пакете по умолчанию исходного файла jar перейдут в целевой пакет, таким образом, имеют доступ.