[英]How do I convert from the string representation of a class to an instance of the class?
我有一个类路径的字符串表示形式。 它可以是三个类中的任何一个,它们全部实现相同的接口Adapter ,但是我不知道值是什么。
给定一个仅包含以上三个字符串之一的变量,如何获得实际类的可用实例?
您可以使用:
String name = "com.example.adapters.Music";
Object obj = Class.forName(name).newInstance();
然后,您必须将obj
转换为正确的类型(可能通过检查名称或使用instanceof
)。 如果您的类具有公共基类(或它们实现的接口),并且使用obj
仅知道它是某个子类,则会更容易。
仅当类具有默认构造函数时,此方法才有效。 否则,您将不得不使用反射来获取构造函数方法的实例,并使用适当的参数来调用它。
如果一个类具有无参数构造函数,则通常使用以下方法从其包限定的类名称(例如,“ java.lang.Integer”)创建对象:
Class.forName
Class.newInstance
For e.g MusicClass mObj = Class.forName(<string name>).newInstance();
如果需要将参数传递给构造函数,则可以使用以下替代方法:
Class.getConstructor
Constructor.newInstance
您可以使用String数组保存三个字符串
String names[]= {"com.example.adapters.Music","com.example.adapters.Video","com.example.adapters.Photo"};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.