Nie znalazłem eleganckiego sposobu rozwiązania tego problemu. Mam klasę abstrakcyjną, którą kilka innych klas dziedziczy abstrakcyjną metodą, która może zawierać od zera do 4-5 argumentów różnych typów.Metoda abstrakcyjna ze zmienną listą argumentów
public abstract class Item {
public abstract void use();
}
Na przykład, mam klasy, która dziedziczy tę książkę i nie trwa argumentów podczas używania (nadrzędne) Mam klucz klasa, która dziedziczy i ma ciąg i kolejkę jako argumenty gdy nadrzędne, etc ..
Próbowałem już używać generycznych, ale muszę wprowadzić liczbę używaną, np. Przedmiot, kiedy to faktycznie zależy od klasy.
public abstract class Item<T,U> {
public abstract void use(T arg1, U arg2); //Number of arguments/types could be more or less
}
Próbowałem wysyłając zmienną listę obiektów, ale typy obiektów są zawsze zmienne i nie mam pewności co do składni, aby otrzymać w klasach dziedziczących.
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
}
Po prostu robię coś złego - czy ktoś może zaoferować jakąkolwiek pomoc lub wgląd?
Jeśli zrobisz "Pozycja it = new Book();", w jaki sposób proponujesz wywołanie metody 'Book.use (String, Queue);' na tym, jeśli kompilator nie może wiedzieć, jakie są poprawne typy argumentów ? A jeśli nie spodziewasz się, że kiedykolwiek będziesz miał podklasę "Przedmiotu" w zmiennej klasy nadrzędnej, dlaczego ta metoda musi być abstrakcyjna? – millimoose