首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赋予函数创建由String参数定义的新对象的能力

赋予函数创建由String参数定义的新对象的能力
EN

Stack Overflow用户
提问于 2016-05-12 12:57:33
回答 1查看 52关注 0票数 0

现在很难解释。假设我有一个带有参数x的函数create,它接受一个字符串。对象所定义的新对象的能力是否可以赋予create函数:

代码语言:javascript
复制
public void create(String x) {
  this.stuff = new x(); 
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-12 13:08:01

如果只有4种不同的Strings传入,那么进行切换要比通过反射进行切换要容易得多。另一个选项,特别是超过4个不同值的选项,是创建一个Map<String, YourInterface>,这样您就可以使用this.stuff = map.get(x);获取对象。这要求您的对象是无状态的。

代码语言:javascript
复制
switch(x) {
    case "Foo":
        this.stuff = new Foo();
        break;
    case "Bar":
        this.stuff = new Bar();
        break;
    // etc.
}

或者以一种更优雅的方式使用相同的引用:

代码语言:javascript
复制
Map<String, IAttack> attackMap = new HashMap<>();  // Assuming IAttack is an interface implemented by your classes
public MyClass() {
    attackMap.put("Foo", new Foo());
    attackMap.put("Bar", new Bar());
}

public void create(String x) {
  this.stuff = attackMap.get(x);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37187631

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档