【发布时间】:2013-07-30 01:39:10
【问题描述】:
我还没有找到解决这个问题的优雅方法。我有一个抽象类,其他几个类使用抽象方法继承该抽象类,该抽象方法可以包含从零到 4-5 个不同类型的参数。
public abstract class Item {
public abstract void use();
}
例如,我有一个 Book 类继承了 this 并且在覆盖 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
}
我可能只是做错了什么 - 任何人都可以提供任何帮助或见解吗?
【问题讨论】:
-
如果你这样做
Item it = new Book();,如果编译器不知道正确的参数类型是什么,你如何建议在其上调用方法Book.use(String,Queue);?如果您不希望在父类的变量中拥有Item的子类,为什么该方法需要是抽象的?
标签: java inheritance variadic-functions