传递与创建新Object而不是Object相同含义的String

时间:2016-12-09 02:22:30

标签: java

我有一个如下界面:

public interface Condition extends OtherConditionInterface {}

实现它的多个子类:

- 可以在构造函数中使用多个子条件

public class SubCondition1 implements Condition {
    private final List<Condition> conditions;

    public Subcondition1(final Condition... condition) {
        this.conditions = Arrays.asList(condition);
    }
}

- 只有一些字符串:

public class SubCondition2 implements Condition {
    private String cond;

    public Subcondition2(final String cond) {
        this.cond = cond;
    }
}

现在,我有另一个类,其构造函数看起来像这样:

public class Bar {
    private final String name;
    private final Condition condition;

    public Bar(String name, Condition condition) {
        this.name = name;
        this.condition = condition;
    }
}

据推测,当我想创建一个新的Bar对象时,我会这样:

new Bar("sampleTitle", new Subcondition1(new Subcondition2("done"), new Subcondition1(new Subcondition2("foo"), new Subcondition2("bar")));

但我遇到的问题是我有第二个参数需要传递给Bar(条件)存储为String,如下所示:

String str = "new Subcondition1(new Subcondition2("done"), new Subcondition1(new Subcondition2("foo"), new Subcondition2("bar"))";

我的问题是,在尝试创建新的Bar时,如果有任何方法可以将字符串作为第二个参数传递,请考虑它是否要求条件。

我知道这远非理想。甚至不是常识,但数据存储在String中的事实现在无法改变。

编辑:使用ScriptEngine将String解析为Object,然后将其转换为(Condition)是不可行的。原因是脚本的执行总是会抛出以下形式的错误:“Condition”未定义,因为它们不是JavaScript的一部分。此外,无法导入新库。因为我不允许这样做。

0 个答案:

没有答案