问题: 我有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概念。请帮忙。
答案 0 :(得分:0)
首先,你需要完全限定的类名,即:your.full.class.path.SearchResults
,之后假设一个no-args构造函数变得相对容易实例化:
Class<?> cls = Class.forname(clickedString);
SearchResults results = (SearchResults) cls.newInstance();