私はジェネリックスの初心者であり、これを達成するための最良の方法を見つけることができません。私が明らかに間違ったことをしている場合は、遠慮なく指摘してください。
interface Node<T> {
void addOne(Node<T> node);
}
class StringNode implements Node<String> {
List<StringNode> data = new ArrayList<>();
/**
* {@inheritDoc}
*/
@Override
public void addOne(Node<String> node) {
StringNode stringNode = (StringNode) node;
data.add(stringNode);
}
}
関数自体を署名publicvoidaddOne(StringNode node)にすることで、addOneの実装でNodeからStringNodeへのダウンキャストを回避する方法を見つけたいと思っていました。インターフェイスの実装でこれを実現するためにノードの定義をどのように変更できるかについてのアイデアはありますか?
すでに尋ねられた質問を検索してみましたが、近いものを見つけることができませんでした。これがすでに議論されている質問へのポインタも大歓迎です。
前もって感謝します!