以名字命名

Urh*_*rho 75 java android class

如果我在我的应用程序中有一个名为TestActivity的Activity类,有没有办法按其名称获取其类,如下例所示:

Class<?> c = getClassByName("TestActivity");
Run Code Online (Sandbox Code Playgroud)

nge*_*esh 144

使用forName代替..

像这样的东西..

 try {
    Class<?> act = Class.forName("com.bla.TestActivity");
 } catch (ClassNotFoundException e) {
        e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

  • 您还必须提供完整的包名称.例如:com.bla.TestActivity作为Class.forName的参数 (27认同)

rap*_*sse 8

您可以使用Class::forName来获取未知类型的类对象。如果你想获得一个类型化的类,你可以Class::asSubclass在返回的类上使用Class::forName

Class<? extends Activity> activityClass = Class.forName("com.example.TestActivity")
                                               .asSubclass(Activity.class);
Run Code Online (Sandbox Code Playgroud)

当然,您还必须处理一堆不同类型的异常。处理反射时通常如此。


小智 5

的Class.forName似乎有它的例外.这只是为了扩展上述内容以解决这个问题.

try { t = Class.forName("com.package.classname"); } catch (Exception ignored){}
Run Code Online (Sandbox Code Playgroud)

  • @crazyhatfish - 似乎帕特里克可能没有权利做任何有用的事情_except_发表他自己的答案. (6认同)
  • @amess哎呀,你的权利,我忘了评论需要代表.谢谢你纠正我. (3认同)