使用Java派生类数组时出错

使用Java派生类数组时出错,java,derived-class,Java,Derived Class,我在这段代码上遇到了一个我不理解的错误(在注释中标记): 到 我用来检查答案的测试是: Terminal t1 = new Terminal("t1"); Terminal t2 = new Terminal("t2"); Terminal t3 = new Terminal("t3"); NonTerminal exp = new NonTerminal("exp"); NonTerminal nt1 = new NonTerminal("nt1");

我在这段代码上遇到了一个我不理解的错误(在注释中标记):

我用来检查答案的测试是:

    Terminal t1 = new Terminal("t1");
    Terminal t2 = new Terminal("t2");
    Terminal t3 = new Terminal("t3");

    NonTerminal exp = new NonTerminal("exp");
    NonTerminal nt1 = new NonTerminal("nt1");
    NonTerminal nt2 = new NonTerminal("nt2");
    NonTerminal nt3 = new NonTerminal("nt3");

    Rule r1 = new Rule(exp, t1, nt2, t3);

    Log.v(TAG, "The rule is: " + r1.toString());
日志文件显示:

01-15 10:18:11.335:V/MainActivity(1732):规则是:exp->t1 nt2 t3


classe当我按照您的建议执行操作时,会出现相同的错误,但在其他地方:
this.rhs=rhs(规则类的构造函数)类型不匹配:无法从类转换ctor也应该更改-我相应地修改了我的答案。有效,请参阅我的增强型问题正文。现在我不明白什么时候以及如何使用
Class<? extends Symbol>
Symbol
    Terminal t1 = new Terminal("t1");
    Terminal t2 = new Terminal("t2");
    Terminal t3 = new Terminal("t3");

    NonTerminal exp = new NonTerminal("exp");
    NonTerminal nt1 = new NonTerminal("nt1");
    NonTerminal nt2 = new NonTerminal("nt2");
    NonTerminal nt3 = new NonTerminal("nt3");

    Rule r1 = new Rule(exp, t1, nt2, t3);

    Log.v(TAG, "The rule is: " + r1.toString());
public class Rule {
    private NonTerminal lhs;
    private Symbol[] rhs;

    public Rule(NonTerminal lhs, Symbol... rhs) {
        this.lhs = lhs;
        this.rhs = rhs;
    }
}