- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
public static
String readFile(String file) {
return Read.file( Reflection.getCallerClass(2), file,"\n");
}
public static
String readFile(Class c, String file, final String lineBreaker) {
return Read.stream(c.getResourceAsStream(file),lineBreaker);
}
А всё из-за желания секономить 1 параметр при вызове фабрики.
Я по умолчанию использую контекстный загрузчик классов...
>метод использует информацию о типе того, кто его вызывает, для того, чтобы понять, в какую ногу стрелять.
Впрочем, у кого что болит...
давал сцылку на геймдев где предлагал программу с процедурами, которые ничего не возвращают.
А вот я тут подумал - если и аргументы тоже не передавать.
Ну и по старой-доброй традиции - расчет факториала без параметров.
http://ideone.com/dIycnd
фабрика тянула ресурс, поднимала из него бин, начиняла и возвращала его. Удобно это тем, что настройки лежат прямо рядом с кодом, который их использует. В пику любителям контектов и всяких IoC.
И причем бин мог быть любого типа.
Трабла возникла лишь тогда, когда при рефакторинге вклинился лишний метод-прослойка с другого класса, в котором на беду тоже лежал файл с настройками. Кстати тот проект так и работает.
Получается что единичка - readFile, а двоечка - как раз тот кто его вызвал.
а потом ресурсы у меня перестали находиться.
внимание, вопрос: почему?
вариантов тут может быть несколько.
<extrasence>
ты вызвал из наследника (который в другом пакадже) метод родителя, и ожидал что оно возьмет ресурс наследника.
</extrasence>
Как я понимаю Class.getResourceAsStream попил много крови не только из меня.
пакадже) метод родителя, и ожидал что оно
возьмет ресурс наследника.
да, это была ощутимая оплеуха от этих ООПешных загрузчиков, именно подстава с наследованием.
вторая была в том, что я один и тот же ресурс хотел грузить из разных классов в разных пакетах, но указывая относительный путь, приходилось всегда писать разные пути, особенно при реорганизации классов по пакетам.
и наконец, версия, приближенная к предположению @roman-kashitsyn, я не мог загрузить ресурс из отдельного jarика
это не считая таких мелочей, как сложности с получением пути пустого пакета (без класса), невозможность получить список этих ресурсов и т.д.
однако библиотека моих попыток целовать Жабу в зад еще цела