Почему getResourceAsStream метод находится в классе Класса?

Почему общественность (имя строки) InputStream getResourceAsStream находится в классе Класса? Это просто дает inputstream файла, который находится в файле банки и нет никакого отношения с классом Класса. таким образом, это может быть статический метод, и это может быть в любом классе.

7
задан ShiDoiSi 27 November 2012 в 09:34
поделиться

2 ответа

Там связь с классом:

  • Пакет класса учитывается - если вы вызовете getResourceAsStream ("baz.txt") в классе для foo.bar.SomeClass , он будет искать / foo /bar/baz.txt
  • Загрузчик классов учитывается в первую очередь для поиска ресурсов - если бы это был статический метод, как бы он узнал, какие файлы jar (и т. д.) искать? В жизни есть нечто большее, чем системный загрузчик классов
10
ответ дан 6 December 2019 в 23:00
поделиться

Он просто дает поток ввода файла, который находится в файле jar ...

Неверно. Не все загрузчики классов загружают ресурсы из обычного файла JAR.

  • Некоторые загрузчики классов загружаются из каталогов.
  • Некоторые загрузчики классов загружаются из сети.
  • Некоторые загрузчики классов загружаются из нескольких источников.

Вся эта сложность скрыта от вас, когда вы используете ClassLoader API через Class в этом случае.

... и нет никакого отношения к классу класса.

Неверно. См. Ответ @Jon Skeet. Обратите внимание, что вызов Class.getResourceAsStream (String) дает ресурс, который принадлежит к тому же контексту безопасности, что и класс. Это может быть очень важно, если используется несколько загрузчиков классов / контекстов безопасности.

1
ответ дан 6 December 2019 в 23:00
поделиться
Другие вопросы по тегам:

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