我还没有找到一种优雅的方法来解决这个问题。我有一个抽象类,其他几个类使用抽象方法继承该抽象类,该抽象方法可以包含从零到 4-5 个不同类型的参数。
public abstract class Item {
public abstract void use();
}
例如,我有一个 Book 类继承这个并且在覆盖 use() 时不接受任何参数,我有一个 Key 类在覆盖时继承并接受一个 String 和一个 Queue 作为参数,等等......
我尝试过使用泛型,但是当它实际上取决于类时,我必须输入使用的数字,例如 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
}
我可能只是做错了什么 - 任何人都可以提供任何帮助或见解吗?