Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
В сущности, уже в реализованной нами версии загрузчика существовали «true-static»-классы – это библиотечные классы из пакетов типа java.lang, которые мы не пытались грузить самостоятельно. Скажем, такими были стандартные типы Object и String. Именно поэтому в первоначальном варианте теста мы смогли получить от созданного экземпляра динамического класса TestModule строку String – результат метода toString().
Можно придумать много соглашений, по которым
загрузчик должен опознавать «true-static»-классы. Например, можно проверить
существование некоторого ключевого static-поля или проверить, не реализован ли
в классе некоторый специальный пустой интерфейс
Итак, начинаем модифицировать наш загрузчик DynamicClassOverloader: добавляем в методе findClass сразу перед вызовом:
File f= findFile(name.replace('.','/'),".class");
дополнительную проверку имени name. Вот начало исходного текста нового метода findClass:
protected Class findClass(String name)
throws ClassNotFoundException
{
Class result= (Class)classesHash.get(name);
if (result!=null) {
/*
System.out.println("% Class "+name+" found in cache");
/*
return result;
}
if (name.toLowerCase().indexOf("truestatic")!=-1)
return findSystemClass(name);
File f= findFile(name.replace('.','/'),".class");