Я пытаюсь запустить этот код:Загрузка массива с загрузчиком классов
public class ClassLoaderTest
{
public static void main(String[] args) throws Exception
{
Object[] obj = new Object[]{};
String cname = obj.getClass().getName();
System.out.println(cname);
ClassLoaderTest.class.getClassLoader().loadClass(cname);
}
}
Но это бросает ClassNotFoundException. Интересно, если я вместо этого использую эту строку:
Class.forName(cname);
это работает просто отлично.
Что здесь происходит?
редактировать: Я использую Java 6. println
печатает это:
[Ljava.lang.Object;
Я думаю, вы спрашиваете из любопытства, потому что в java-массиве «классы» генерируются vm, поэтому нет смысла загружать их. (вы загрузите класс компонента, а затем создадите массив, который vm создаст класс массива) – morpheus05
Возможный дубликат [Class.forName() vs ClassLoader.loadClass() - который используется для динамической загрузки?] (http://stackoverflow.com/questions/8100376/class-forname-vs-classloader-loadclass-which-to-use-for-dynamic-loading) –
Тип массива действительно класс; и 'Class.forName()' javadoc позволяет это. – ZhongYu