【发布时间】:2013-12-13 15:22:53
【问题描述】:
好的,所以这个问题已经被问过很多次了,我查看了各种答案,但仍然无法做到这一点。
问题: 我有一些 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 概念。请帮忙。
【问题讨论】:
-
在 4 年后在这里发表评论,以防有人登陆。片段永远不应该用构造函数来实例化。见stackoverflow.com/questions/14654766/…。对于按名称加载的通用类,反射是一种方式。请参阅上面 Asterisk 的评论。