我想让接口(interface)具有通用方法,该方法从类中获取对象是一个参数,这是我的接口(interface)
public interface mDataBase<E>{
public<E extends Class> void Store(E x);
public void Search(E x);
public void Remove(E x);
}
当我尝试像该代码一样实现此方法
@Override
public <E extends Customer> void Store(E x) {
Scanner s = new Scanner(System.in);
try (PrintWriter pr = new PrintWriter(new FileWriter(cusFile, true))) {
pr.println(x.getName() + "$" + x.getNumber() + "$" + x.getNID() + "$" + x.getEmail() + "$" + x.getComment() + "$" + x.getAdv());
} catch (IOException n) {
System.out.println("Error :I cant write File that Stores Customers Information Not Found");
Logger.getLogger(StoreCustomer.class.getName()).log(Level.SEVERE, null, n);
}
}
程序想要删除@Override
才能工作
而顾客是另一个类(Class)
我有很多类型,我将使用相同的界面
最佳答案
您的接口(interface)声明了一个方法 public<E extends Class> void Store(E x);
但你的实现类声明了一个方法 public <E extends Customer> void Store(E x)
。它们必须匹配,或者通过声明接口(interface)来匹配
public <E extends Customer> void Store(E x);
或者类声明
public<E extends Class> void Store(E x);
我猜你想要前者。
编辑: 经过评论,我想你想要的是:
public interface Database<E> {
public void store(Class<? extends E> clazz, E x);
public void search(E x);
public void remove(E x);
}
还有
public class CustomerDatabase implements Database<Customer> {
@Override
public void store(Class<? extends Customer> clazz, Customer x) {
...
}
...
}
虽然我不确定类(class)舞会是否必要。我就这么做
public void store(E x);
然后通过 x.getClass()
获取类(class).
关于java - 接口(interface)中的泛型方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41191317/