假设我想使用泛型将类转换为另一个类。我能这样做吗?
例如。
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很新。有人可以帮我这个吗?
由于
答案 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}}的处理程序,我怀疑这是你想要达到的目标。