android 基于字符串名称动态示例化类

jgzswidk  于 12个月前  发布在  Android
关注(0)|答案(1)|浏览(210)

好吧,这个问题已经被问了很多次了,我看了各种各样的答案,但不知何故还是不能得到正确的答案。
问题:我有一些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概念。请帮助。

rjjhvcjd

rjjhvcjd1#

首先,你需要完全限定的类名,例如:your.full.class.path.SearchResults,然后,假设一个无参数的构造函数,它变得相对容易示例化:

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

字符串
newInstance()getDeclaredConstructor()都可以选择分别接受参数和参数类型。

相关问题