この問題を解決するためのエレガントな方法はまだありません。私は抽象クラスを持っています。いくつかの他のクラスは抽象メソッドを継承しています。この抽象メソッドは、さまざまな型の0から4までの引数を含むことができます。例えば引数の可変リストを使った抽象メソッド
public abstract class Item {
public abstract void use();
}
、私は)これを継承し、使用をオーバーライドする場合(引数を取らないBookクラスを持って、私は継承し、オーバーライドする際、引数として文字列とキューを取る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
}
誰かが助けや洞察力を提供できるのですか?
'Item it = new Book();'を実行した場合、正しい引数の型が何であるかをコンパイラが知ることができない場合、メソッド 'Book.use(String、Queue);' ?親クラスの変数に 'Item'のサブクラスを持つことを期待していない場合、なぜメソッドは抽象クラスである必要がありますか? – millimoose