我有一个类路径的字符串表示形式。它可以是三个类中的任何一个,它们全部实现相同的接口Adapter,但是我不知道值是什么。
“ com.example.adapters.Music”
“ com.example.adapters.Video”
“ com.example.adapters.Photo”
给定一个仅包含上述三个字符串之一的变量,如何获得实际类的可用实例?
最佳答案
您可以使用:
String name = "com.example.adapters.Music";
Object obj = Class.forName(name).newInstance();
然后,您必须将
obj
强制转换为正确的类型(可能通过检查名称或使用instanceof
)。如果您的类具有公共基类(或它们实现的接口),并且使用obj
仅知道它是某个子类,则会更容易。仅当类具有默认构造函数时,此方法才有效。否则,您将不得不使用反射来获取构造函数方法的实例,并使用适当的参数来调用它。