我有一个类路径的字符串表示形式。它可以是三个类中的任何一个,它们全部实现相同的接口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仅知道它是某个子类,则会更容易。

仅当类具有默认构造函数时,此方法才有效。否则,您将不得不使用反射来获取构造函数方法的实例,并使用适当的参数来调用它。

10-07 13:22