Nie mogę zrozumieć, dlaczego to nie działa. Moje zajęcia na najwyższym poziomie znajdują się w nienazwanych pakietach (na razie planuję później skonfigurować pakiety).Próbujesz zaimportować typy zagnieżdżone z klasy
Iclass1.java:
public class Iclass1 {
public static class Nested1 {
// whatever
}
}
Iclass2.java:
import Iclass1.*;
public class Iclass2 {
private Nested1 someMember;
// etc.
}
Po kompilacji Iclass1.java
bez błędów, kompilator narzeka kiedy skompilować Iclass2.java
: „Błąd: Pakiet Iclass1 nie istnieje ".
Ale JLS mówi: (7.5.2)
import PackageOrTypeName . * ;
The PackageOrTypeName must be the canonical name (§6.7) of a package, a class type, an interface type, an enum type, or an annotation type.
oraz: (6,7)
The fully qualified name of a top level class or top level interface that is declared in an unnamed package is the simple name of the class or interface.
For every primitive type, named package, top level class, and top level interface, the canonical name is the same as the fully qualified name.
więc wydaje się Iclass1 jest kanoniczna nazwa typu I” m próbuje użyć w import
. Co ja robię źle?
(PS: I teraz myślę import static
byłby lepszy, ale to nie działa albo.)
ale - nad wszystkim - co jest właściwą odpowiedzią? –
Sajal's teraz redagowana odpowiedź odpowiednio odpowiada na pytanie. Inne odpowiedzi były błędne (sugerowane rozwiązania nie działają) lub nieprzydatne (po prostu mówią "nie rób tego") lub oba. –