我有
Java类:
abstract class Parent {
abstract void test(Object pObject, Map pData);
}
public class Test extends Parent {
@Override
void test(Object pObject, Map pData) {
}
}
并希望重构代码:
abstract class Parent {
abstract void test(T pObject, Map pData);
}
public class Test extends Parent {
@Override
void test(Object pObject, Map pData) {
}
}
Eclipse(4.4.2如果有意义)告诉我Test类中的代码无效(编译时错误)和正确的test()方法签名必须是:
@Override
void test(Object pObject, Map pData) {
}
我的问题是为什么!?
实际上,真实的故事有点长.我有很多孩子班(比如Test),并且不希望改变它们,而更喜欢使用泛型(即< T>类)来为Parent类的新孩子.在这两种情况下,test()方法的第二个参数必须是Map< String,Object>.
有任何想法吗?