2016-03-22 55 views
0

爲什麼我收到"The return type is incompatible with Map.Entry<SEND,CANDataSendInfo>.getKey()"不兼容的映射條目與枚舉在Java

在這裏,我想使對象,包括枚舉的關鍵和類對象的價值,而是我在線路越來越問題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; 
    } 

} 

回答

2

這就是問題所在:

public class SendKV<SEND , CANDataSendInfo> implements Map.Entry<SEND , CANDataSendInfo> 

你聲明通用類,其類型參數爲SENDCANDataSendInfo。你不希望這是通用的 - 你想SEND意味着現有的類型SEND等只要改變你的聲明:

public class SendKV implements Map.Entry<SEND, CANDataSendInfo> 

(作爲一個方面說明,這是非常奇怪的一個映射條目是可以肯定的,除非你有一個很好的理由,否則我會敦促你在構造函數中使用鍵和值,使變量成爲final,並且移除setters。 。)

+0

我真的是你的粉絲@Jon,我從來沒有想過你會對這個查詢感興趣。非常感謝。而且我明白你的觀點。它正在工作。 –