好的,这已经被问了很多遍了,我看过各种答案,但是仍然无法以某种方式解决这个问题。
问题:
我有一些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().
}
我只想避免是否要交换案例,而是寻找一种更明智的方法。我可能会缺少一些非常基本的核心Java概念。请帮忙。
最佳答案
首先,您需要完全限定的类名,即your.full.class.path.SearchResults
,之后假设没有参数的构造函数,实例化将变得相对容易:
Class<?> cls = Class.forname(clickedString);
SearchResults results = (SearchResults) cls.newInstance();
关于java - Java根据字符串名称动态实例化类,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20561074/