如何覆盖具有泛型类型的方法

时间:2021-04-11 18:36:44

标签: java generics

我需要重写一个像下面这样的通用方法:

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);
}

我上面试过了,它有编译错误说没有实现转换方法

1 个答案:

答案 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)

相关问题