この問題を解決するエレガントな方法はまだ見つかりません。私は、他のいくつかのクラスが抽象メソッドで継承している抽象クラスを持っています。このメソッドには、さまざまな型の 0 から 4 ~ 5 個の引数を含めることができます。
public abstract class Item {
public abstract void use();
}
たとえば、これを継承し、use() をオーバーライドするときに引数を取らない Book クラスがあり、オーバーライド時に String と Queue を継承して引数として取る Key クラスがあります。
ジェネリックを使ってみたのですが、実際にはクラスに依存する場合、Item などの使用番号を入力する必要があります。
public abstract class Item<T,U> {
public abstract void use(T arg1, U arg2); //Number of arguments/types could be more or less
}
オブジェクトの可変リストを送信しようとしましたが、オブジェクト タイプは常に可変であり、継承クラスで受信する構文がわかりません。
public abstract class Item<T> {
public abstract void use(T... arguments);
}
public class Book extends Item<?> {
public void use(?);
}
public class Book extends Item<String, Queue> { //Wrong number of arguments since I can't use Item<T...>
public void use(String str, Queue q); //fails
}
私は何か間違ったことをしているのかもしれません - 誰か助けや洞察を提供できますか?