繁体   English   中英

如何从类的字符串表示形式转换为该类的实例?

[英]How do I convert from the string representation of a class to an instance of the class?

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

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

如果一个类具有无参数构造函数,则通常使用以下方法从其包限定的类名称(例如,“ 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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM