经过一天的搜索,我决定问问您的帮助人员:-) 这是我的问题: 我需要为一些波霍写掩护。
public abstract class Answer<T extends Serializable> implements Serializable {//some code}
public class BooleanAnswer extends Answer<Boolean> {//some code}
public abstract class AnswerDMO<T extends Serializable> implements Serializable {//some code}
public class BooleanAnswerDMO extends AnswerDMO<Boolean> {//some code}
public interface Converter<I, O> {
O convert(I input);
}
public abstract class AnswerConverter<A extends Answer<Serializable>, J extends AnswerDMO<Serializable>>
implements Converter<A, J>, Serializable {
@Override
public J convert(A input) {
// some code
}
}
public class BooleanAnswerConverter extends AnswerConverter<BooleanAnswer, BooleanAnswerDMO>
{
@Override
public BooleanAnswerDMO convert(BooleanAnswer input) {
// some code
}
}
我在BooleanAnswerConverter上遇到错误,参数BooleanAnswer不在其范围内,应扩展答案 我尝试了很多组合,但无法正确完成。
如何解决?
答案 0 :(得分:1)
由于A
和J
扩展了Answer
和AnswerDMO
,并且它们具有类型,因此必须将AnswerConverter
从以下位置更改:
public abstract class AnswerConverter<A extends Answer<Serializable>, J extends AnswerDMO<Serializable>>
收件人:
public abstract class AnswerConverter<A extends Answer, J extends AnswerDMO>
Answer
和AnswerDMO
具有强制Serializable
的类型。在您的示例中为布尔值。 Answer<Serializable>
将尝试确保最终实现是此实现,而不是通用答案。
此更改导致正确编译类:
public class BooleanAnswerConverter extends AnswerConverter<BooleanAnswer, BooleanAnswerDMO> {
@Override
public BooleanAnswerDMO convert(BooleanAnswer input) {
return null;
}
}
答案 1 :(得分:0)
我不知道这是否是您想要的,但可行的解决方案是
abstract class AnswerConverter<A extends Answer<? extends Serializable>,
J extends AnswerDMO<? extends Serializable>> implements Converter<A, J>, Serializable {