JAVA覆盖方法 公共类MyMap扩展LinkedHashMap { @凌驾 公共可序列化get(字符串键) { 返回null; } }
错误:方法不重写或实现超类型中的方法删除JAVA覆盖方法 公共类MyMap扩展LinkedHashMap { @凌驾 公共可序列化get(字符串键) { 返回null; } },java,overriding,Java,Overriding,错误:方法不重写或实现超类型中的方法删除@override注释。这将修复错误 请记住,如果您实际上想要覆盖某个父方法,这不是您想要做的。相反,在get方法中查找可能的打字错误、错误或类型不匹配 在您的情况下,您可能需要: public class MyMap extends LinkedHashMap<String, Serializable> { @Override public Serializable get(String key) {
@override
注释。这将修复错误
请记住,如果您实际上想要覆盖某个父方法,这不是您想要做的。相反,在get
方法中查找可能的打字错误、错误或类型不匹配
在您的情况下,您可能需要:
public class MyMap extends LinkedHashMap<String, Serializable>
{
@Override
public Serializable get(String key)
{
return null;
}
}
删除
@Override
注释。这将修复错误
请记住,如果您实际上想要覆盖某个父方法,这不是您想要做的。相反,在get
方法中查找可能的打字错误、错误或类型不匹配
在您的情况下,您可能需要:
public class MyMap extends LinkedHashMap<String, Serializable>
{
@Override
public Serializable get(String key)
{
return null;
}
}
get
的签名是public V get(对象密钥)
因此,您需要将参数类型更改为
Object
,而不是String
get
的签名是public V get(Object key)
因此,您需要将参数类型更改为Object
,而不是String
您试图覆盖的参数具有以下签名:
@Override
public Object get(Object key)
{
return null;
}
因此,要重写它,方法的参数必须是对象
,而不是字符串
:
public Serializable get(Object key);
公共类MyMap扩展LinkedHashMap
{
@凌驾
公共可序列化get(对象键)
{
返回null;
}
}
您试图覆盖的具有以下签名:
@Override
public Object get(Object key)
{
return null;
}
因此,要重写它,方法的参数必须是对象
,而不是字符串
:
public Serializable get(Object key);
公共类MyMap扩展LinkedHashMap
{
@凌驾
公共可序列化get(对象键)
{
返回null;
}
}
为什么public V get(Object key)通过@Override public Serializable put(String key,Serializable value){}成功重写?@user1034253:对不起,我不理解这个问题。public Serializable put(String key,Serializable value)-编译的,public Serializable get(String key)正如您所说,需要用替换字符串Object@aix-OP询问为什么put
不遵循相同的模式。某个地方有一篇关于这个的流行帖子,我们应该把它链接起来。@user1034253-看看这篇帖子:为什么public V get(Object key)成功地被@Override public Serializable put(String key,Serializable value){}覆盖了?@user1034253:很抱歉,我不明白这个问题。public Serializable put(字符串键,可序列化值)-如您所说,已编译的公共可序列化get(字符串键)需要替换为字符串Object@aix-OP询问为什么put
不遵循相同的模式。某个地方有一篇关于这一点的流行帖子,我们应该将其链接起来。@user1034253-请参阅此帖子: