2011-05-25 80 views
1

我遇到了問題。必需的java.lang.String found String ... 我能在那裏做什麼?Java接口實現問題

public interface Node { 
     public <V> V get(); 
     public <V> void sets(V value); 
    } 

public enum MIBNodes implements Node { 

    TEST { 
     private String e; 
     @Override 
     public String get() { 
      return "aa"; 
     } 

     @Override 
     public <String> void sets(String value) { 
      e=value; 
     } 




    }; 


}; 

UPDATE
像測試每個枚舉實例,TEST1 ......可能有不同的類型..字符串,整數或任何其它的......所以public enum MIBNodes implements Node {不能成爲public enum MIBNodes implements Node<String> {

回答

4

這是問題:

@Override 
public <String> void sets(String value) { 
     ^^^^^^ 
    e=value; 
} 

這裏,String是一種類型的變量(的V重新定義),而不是一個java.lang.String。我真的不認爲你可以修復不改變你的設計:

public interface Node<V> { 
    public V get(); 
    public void sets(V value); 
} 

而如果你希望你的枚舉是通用的:這是不可能的。不同的枚舉項目不能使用不同的通用參數實現相同的接口。

+0

因此,任何替代解決方案呢? – GorillaApe 2011-05-25 10:28:59

+0

但它適用於獲得! – GorillaApe 2011-05-25 10:30:32

+0

@Parhs每個泛型一個枚舉,恐怕 – 2011-05-25 10:30:33