Java 为什么Class.forName会出现ClassNotFoundException,即使我专门导入了确切的类?

Java 为什么Class.forName会出现ClassNotFoundException,即使我专门导入了确切的类?,java,Java,我有以下代码: Class<?> classType = Class.forName(typeClassName); 但我特别将EmailAddress类导入到运行第一个代码的类中: import ie.folder.EmailAddress; 这是怎么回事?如果您已经在导入该类,那么就不需要使用反射,只需这样做即可 Class<EmailAddress> clazz = EmailAddress.class; 如果无法找到或加载该类,则必须处理异常。您需要使用该类

我有以下代码:

Class<?> classType = Class.forName(typeClassName);
但我特别将EmailAddress类导入到运行第一个代码的类中:

import ie.folder.EmailAddress;

这是怎么回事?

如果您已经在导入该类,那么就不需要使用反射,只需这样做即可

Class<EmailAddress> clazz = EmailAddress.class;

如果无法找到或加载该类,则必须处理异常。

您需要使用该类的全名。Class.fornamie.folder.EmailAddress;-为什么要这样做目前还是个谜。如果你已经导入了它,为什么要使用forName?注意,这两种情况都不能保证类在运行时位于类路径上;导入只是保证如果编译时不存在编译器错误,您将得到一个编译器错误;如果类EmailAddress不在包中,请尝试将其放在包中,这样编译器在导入该类时就不会混淆。这就是我认为worktypeClassName可能是15个不同类之一的解决方法。我只是以EmailAddress为例TypeClassName可以是大约15个不同类中的一个。我只是以EmailAddress为例
Class<EmailAddress> clazz = EmailAddress.class;
Class<?> clazz = Class.forName("ie.folder.EmailAddress");