Я не нашел элегантный способ решить эту проблему. У меня есть абстрактный класс, который несколько других классов наследуют абстрактным методом, который может содержать от 0 до 4-5 аргументов различных типов.
public abstract class Item {
public abstract void use();
}
Например, у меня есть класс Book, который наследует это и не принимает аргументов при переопределении use(), у меня есть класс Key, который наследует и принимает строку и очередь как аргументы при переопределении и т.д.
Я пробовал использовать generics, но я должен вводить используемый номер, например 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
}
Я могу просто делать что-то не так - может ли кто-нибудь предложить какую-либо помощь или понимание?