您将不得不使用运行时多态性来实现这一点。
第 1 步:创建代表每种类型的接口。
public interface Foo<T> {
public void convert(T bar);
}
public interface Bar<T> {
public void convert(T foo);
}
第二步:创建实现类。
public class Foo1 implements Foo<Bar1> {
@Override
public void convert(Bar1 bar) {
System.out.println("Foo1, Bar1");
}
}
public public class Bar1 implements Bar<Foo1> {
@Override
public void convert(Foo1 foo) {
System.out.println("Foo1, Bar1");
}
}
public class Foo2 implements Foo<Bar2> {
@Override
public void convert(Bar2 bar) {
System.out.println("Foo2, Bar2");
}
}
public class Bar2 implements Bar<Foo2> {
@Override
public void convert(Foo2 foo) {
System.out.println("Foo2, Bar2");
}
}
第三步:根据列表中的实例创建调用转换方法的函数。
public static <T extends Foo, S extends Bar> void convertList(List<T> list,
List<S> libList) {
for (int i = 0; i < libList.size(); ++i) {
list.get(i).convert(libList.get(i));
}
}
第 4 步:创建样本列表数据并进行测试
List<Foo<?>> listOfFoos = new ArrayList<Foo<?>>();
List<Bar<?>> listOfBars = new ArrayList<Bar<?>>();
listOfFoos.add(new Foo1());
listOfFoos.add(new Foo2());
listOfBars.add(new Bar1());
listOfBars.add(new Bar2());
convertList(listOfFoos,listOfBars);