Прежде всего, в текущей реализации будет идти бесконечная рекурсия, когда вы попытаетесь вызвать функцию add с экземпляром TokenSequence.Вы хотели вызвать addAll в этом случае?
Во-вторых, забудьте о
void add(Object)
, если вам нужно добавить 2 метода (заставьте их возвращать логическое значение, если вы хотитебыть последовательным):
public void add(String o) {
add(new Token(o.toString()));
}
public void add(TokenSequence t){
addAll(t);
}
, а добавление (Token) уже реализовано ArrayList
, с другой стороны, если вам нужен единственный метод, вы можете объявить, например:
public void add(Serializable t)
этот метод будет вызываться как для TokenSequence, так и для String.к сожалению, чтобы тот же метод выполнялся для токена (в отличие от метода, предоставленного ArrayList), вам потребуется:
- убедиться, что Token реализует Serializable
- приведение токена к сериализуемому
т.е.:
add((Serializable)new Token())