我在项目中使用泛型时遇到编译器错误。我生成了一个示例代码:
我的Bean接口
privateFunction
My Bean Concrete Class
package sample;
public interface MyBeanInterface {
Long getId();
String getName();
}
我的经理界面
package sample;
public class MyBean implements MyBeanInterface {
private Long id;
private String name;
@Override
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
@Override
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
My Manager Concrete Class
package sample;
import java.util.List;
public interface MyManagerInterface<T extends MyBeanInterface> {
<EXCEPTION extends Exception> List<T> sortAll(List<T> array) throws EXCEPTION;
List<T> sortAll2(List<T> array);
<EXCEPTION extends Exception> List<T> sortAll3() throws EXCEPTION;
}
我尝试在接口中使用方法sortAll而没有方法参数(sortAll())并且它编译,只使用接口中的异常也可以工作,但是两者都没有。
感谢。
答案 0 :(得分:2)
关于sortAll(List<T> list)
方法,你必须这样做:
@Override
public <E extends Exception> List<T> sortAll(List<T> array) throws E {
// TODO Auto-generated method stub
return null;
}
然后,在调用方法时显式设置方法type-parameter:
try {
new MyConcreteManager().<IOException>sortAll(...);
} catch (IOException e) {
}
sortAll3()
实现编译得很好,因为在Java中,当方法定义覆盖另一个时,不允许抛出额外的已检查异常,但它可能会减少。