好吧,这个问题已经被问了很多次了,我看了各种各样的答案,但不知何故还是不能得到正确的答案。
问题:我有一些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或switch case,并寻找一个更聪明的方法。我可能错过了一些非常基本的核心java概念。请帮助。
1条答案
按热度按时间rjjhvcjd1#
首先,你需要完全限定的类名,例如:
your.full.class.path.SearchResults
,然后,假设一个无参数的构造函数,它变得相对容易示例化:字符串
newInstance()
和getDeclaredConstructor()
都可以选择分别接受参数和参数类型。