Library и Escape. Обратите внимание: класс Escape имеет package-private доступ, так как у него нет явного модификатора доступа:// internal/Library.java
package internal;
public interface Library {
static Escape create() {
return new Escape();
}
}
class Escape {}
Следующая программа использует оба класса, но из другого пакета. При этом она не ссылается напрямую на класс Escape по имени — и успешно компилируется и выполняется без ошибок:
void main() {
Object a = internal.Library.create();
IO.println(a);
var b = internal.Library.create();
IO.println(b);
Object c = internal.Library.create();
IO.println(c.toString()); // обратите внимание на вызов toString()
}Но если последнюю переменную c тоже объявить с использованием
var, как здесь:var c = internal.Library.create();
то компиляция завершится ошибкой:
"Object.toString() is defined in an inaccessible class or interface"
🔥 — знал об этом
👍 — полезно
👉 Java Portal