为什么我得到"The return type is incompatible with Map.Entry<SEND,CANDataSendInfo>.getKey()"
这里我试图创建一个对象,其中包含enum作为键,Class对象作为Value,但我在第 public SEND getKey()
package cantestbus;
import java.util.Map;
public class SendKV<SEND , CANDataSendInfo> implements Map.Entry<SEND , CANDataSendInfo>
{
enum SEND
{
SEND_0x41, SEND_0x42, SEND_0x43, SEND_0x44, SEND_0x61, SEND_0x62, SEND_0x63, SEND_0x64
}
private SEND key;
private CANDataSendInfo value;
public SendKV(SEND key, CANDataSendInfo value)
{
this.key = key;
this.value = value;
}
public SEND setKey(SEND key)
{
return this.key = key;
}
public SEND getKey()
{
return this.key;
}
public CANDataSendInfo setValue(CANDataSendInfo value)
{
return this.value = value;
}
public CANDataSendInfo getValue()
{
return this.value;
}
}
答案 0 :(得分:2)
这是问题所在:
public class SendKV<SEND , CANDataSendInfo> implements Map.Entry<SEND , CANDataSendInfo>
您声明了一个名为SEND
和CANDataSendInfo
的类型参数的泛型类。您不希望这是通用的 - 您希望SEND
表示现有类型SEND
等。只需将您的声明更改为:
public class SendKV implements Map.Entry<SEND, CANDataSendInfo>
(作为旁注,一个地图条目是可变的,当然在密钥中是很奇怪的。除非你有一个非常好的理由,我会敦促你在构造函数中取出键和值,使变量最终,并删除setter。我也会使类最终。)