我需要重写一个像下面这样的通用方法:
where
(@loc_type = 'Chain') OR
(@loc_type = 'Operation' AND operation_nbr = @loc_nbr) OR
(@loc_type = 'Region' AND region_nbr = @loc_nbr) OR
(@loc_type = 'Area' AND area_nbr = @loc_nbr) OR
(@loc_type = 'District' AND district_nbr = @loc_nbr) OR
(@loc_type = 'Store' AND C2.str_nbr = @loc_nbr)
现在我有 A 类和 B 类,我想通过将 A 类对象转换为 B 类对象来覆盖上述方法。我确实喜欢下面,但所有显示错误都没有实现该方法。有没有办法可以在覆盖方法中指定 A 类和 B 类?
我在下面尝试过:
interface Converter{
<S, T> T convert(S s);
}
我上面试过了,它有编译错误说没有实现转换方法
答案 0 :(得分:1)
我认为您想要的是通用化界面。
interface Converter<T,R> {
R convert(T toConvert);
}
然后你用
来实现它class AtoBConverter implements Converter<A,B> {
B convert(A toConvert);
}
通过您的方法声明,每个类都需要实现通用版本。
顺便说一句,使用现有接口通常是一种很好的做法;在这种情况下,这将是 Function<T,R>
和方法 R accept(T)
。