我可以使用java泛型在Java中使用相同接口的不同实现吗?

时间:2011-10-21 01:08:52

标签: java generics

假设我想使用泛型将类转换为另一个类。我能这样做吗?

例如。

Class BConvertImpl implements Converter
{
  A toA(Class B);
  void update(Class A, Class B);
}

Class CConverterImpl implements Converter
{
  A toA(Class C);
  void update(Class A, Class C);
}

我可以使用泛型来实现它吗?

我对Java中的Generics很新。有人可以帮我这个吗?

由于

3 个答案:

答案 0 :(得分:4)

是:您需要输入Converter类(并简单地命名方法to):

/**
 * @param <F> The "from" type
 * @param <T> The "to" type
 */
interface Converter<F, T> {

  T to(F from);

  void update(T to, F from);
}

class BConvertImpl implements Converter<B, A> {

  A to(B from) { /* some impl */ }

  void update(A to, B from) { /* some impl */ }
}

class CConverterImpl implements Converter<C, A> {

  A to(C from) { /* some impl */ }

  void update(A to, C from) { /* some impl */ }
}

答案 1 :(得分:2)

您可以这样做:

interface Converter<From, To> {
    public To convert(From object);
}

class BConverter implements Converter<B, A> {
    public A convert(B b) {
        ...
    }
}

class CConverter implements Converter<C, A> {
    public A convert(C c) {
        ...
    }
}

这允许您以通用方式定义Converter接口,然后您可以拥有所需的任何实现。

答案 2 :(得分:0)

不,你不能。你不能像这样或任何其他方式转换Java中的类。你可以做的是创建可以接受Converter任何一种{{1}}的处理程序,我怀疑这是你想要达到的目标。