用D表示的Java解决方案(反射)
我正在D中重新实现一个java程序。我使用了工厂模式, 即从数据“myclass”“5.3,6,8,10”中,我使用反射来调用构造函数
myclass(5.3 ,6,8,10);
在D中如何解决同样的问题,即给定一个类名,以及参数 构造函数采用(仅基元),通过在参数中调用构造函数来创建该类的实例?
一个明显的解决方案如下:制作一个巨大的 switch/case 语句, 以类名作为大小写,并使构造函数采用 double[] 作为参数。 这很丑陋,因为我需要将每个新类添加到这个列表中。
我可能会强制每个类将自己静态添加到某个全局映射中, 以某种方式将类名映射到构造函数。
I am reimplementing a java program in D. I have used the factory pattern,
that is, from the data "myclass" "5.3 ,6,8,10", I use reflection to call the constructor
myclass(5.3 ,6,8,10);
How can I solve the same problem in D, that is, given a class name, and the parameters
the constructor takes (only primitives), create an instance of that class by calling the constructor in the parameters?
One obvious solution is the following: Make a huge switch/case statement,
with class names as cases, and make constructor take a double[] as argument.
This is ugly, since I need to add each new class to this list.
I might enforce each class to statically add themself to some global map,
mapping class name to constructor, somehow.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您可以有一个包含辅助对象的列表。辅助对象(MiniFactory)基本上有一个测试方法和一个工厂方法,所以你可以说:
如果运气好的话,你可以使用模板来定义MiniFactory。
You could have a list with helper objects. The helper objects (MiniFactory) basically have a test method and a factory method, so you can say:
With some luck you can use templates to define the MiniFactories.