Java基于字符串名称动态实例化一个类

时间:2013-12-13 07:16:45

标签: java android

好的,所以这已被多次询问,我已经查看了各种答案,但仍然无法正确地做到这一点。

问题: 我有5个片段(非Android的人请假设类),我需要根据列表中点击的内容动态实例化。我在点击处理程序中得到了字符串。我方便地命名了我的片段。所以基本上我的一个片段叫做SearchResults.java,相应的项目点击将返回“SearchResults”。所以我想做一些事情:

public void onClick(View v) {
Class cls = Class.forname(clickedString)   //clickedString = "SearchResults"
//instantiate it as if it were equal to SearchResults sr = new SearchResults().
}

我只是想避免if / else或切换案例并寻找更聪明的方法。我可能会遗漏一些非常基本的核心Java概念。请帮忙。

1 个答案:

答案 0 :(得分:0)

首先,你需要完全限定的类名,即:your.full.class.path.SearchResults,之后假设一个no-args构造函数变得相对容易实例化:

Class<?> cls = Class.forname(clickedString);
SearchResults results = (SearchResults) cls.newInstance();