Присоединяйтесь к нашему каналу и погрузитесь в мир для Java-разработчика
Связь: @devmangx
РКН: https://clck.ru/3H4WUg
Post #1415
2.5K
Рассмотрим следующий Java-файл, в котором объявлены два класса —
Следующая программа использует оба класса, но из другого пакета. При этом она не ссылается напрямую на класс Escape по имени — и успешно компилируется и выполняется без ошибок:
Но если последнюю переменную c тоже объявить с использованием
то компиляция завершится ошибкой:
🔥 — знал об этом
👍 — полезно
👉 Java Portal
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
- 👍 18
- 🔥 2











