мыслящего в программе Java выглядит следующим образом:Class.forName() бросает ClassNotFoundException
package typeinfo;
import static util.Print.*;
class Candy {
static { print("Loading Candy"); }
}
class Gum {
static { print("Loading Gum"); }
}
class Cookie {
static { print("Loading Cookie"); }
}
public class SweetShop {
public static void main(String[] args) {
print("inside main");
new Candy();
print("After creating Candy");
try {
Class.forName("Gum");
} catch(ClassNotFoundException e) {
print("Couldn't find Gum");
}
print("After Class.forName(\"Gum\")");
new Cookie();
print("After creating Cookie");
}
}
Я ожидаю выход следующим образом:
/* Output:
inside main
Loading Candy
After creating Candy
Loading Gum
After Class.forName("Gum")
Loading Cookie
After creating Cookie
*/
Но получить
inside main
Loading Candy
After creating Candy
Couldn't find Gum
After Class.forName("Gum")
Loading Cookie
After creating Cookie
Очевидно, блок try бросает исключение ClassNotFoundException, что является неожиданным. Любые идеи, почему код генерирует это вместо инициализации класса Gum, как и ожидалось?
Brilliant - очевидно, когда-то указывал. Огромное спасибо! – Terry
Мне это нравится, но чтобы расширить его дальше, есть ли способ итерации через мои программные пакеты, чтобы попытаться найти его без fqn? – JoshuaTree
@ Enjoy87: Насколько я знаю, не в переносном смысле. (Если у вас есть конкретный файл jar или каталог, вы можете посмотреть там, но это другое дело.) –