Class<? extends Symbol>
is a reflection class - it stores a definition of a class that's a Symbol
or one of its sub-classes.
In your example, you want to store instances of Symbol
(or one of its subclasses). Just define your array like this:
public class Rule {
private NonTerminal lhs;
private Symbol[] rhs;
public Rule(NonTerminal lhs, Symbol... rhs) {
this.lhs = lhs;
this.rhs = rhs;
}
}