好的,这已经被问了很多遍了,我看过各种答案,但是仍然无法以某种方式解决这个问题。

问题:
我有一些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/

10-10 01:07