从String获取类类型

Ste*_*ven 71 java reflection class

我有一个String类的名称说"Ex"(没有.class扩展名).我想将它分配给Class变量,如下所示:

Class cls = (string).class
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

Boz*_*zho 155

Class<?> cls = Class.forName(className);
Run Code Online (Sandbox Code Playgroud)

但你className应该完全合格 - 即com.mycompany.MyClass

  • 它抛出ClassNotFound异常 (2认同)
  • 那么要么类不在类路径上,要么您没有传递完全限定的类名,例如 com.mycompany.project.ClassName (2认同)
  • 我遇到了与 ClassNotFoundException 相同的问题。诀窍是在 try-catch 中处理异常。像这样:`try { Class&lt;?&gt; cls = Class.forName("com.company.MyClass"); } catch (ClassNotFoundException ex) { /* 做一些事情来处理字符串无效的情况,因此无法找到类 */ }` (2认同)

Jua*_*nZe 43

String clsName = "Ex";  // use fully qualified name
Class cls = Class.forName(clsName);
Object clsInstance = (Object) cls.newInstance();
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请查看http://java.sun.com/docs/books/tutorial/reflect/TOC.html上的反射Java教程路径.

  • Bozho的答案可能有更多的观点,但我认为你的答案更具描述性.PS.为什么叫JuanZe ??? 几乎听起来像西班牙人和中国人的混合.:d.它背后是否有某种聪明的含义? (3认同)

rsp*_*rsp 8

您可以使用以下forName方法Class:

Class cls = Class.forName(clsName);
Object obj = cls.newInstance();
Run Code Online (Sandbox Code Playgroud)