2013-03-20 32 views
4

我正在學習並嘗試使用Java泛型,並提出了以下不按預期編譯的代碼片段。 Result無法解析I代表輸入,O代表輸出。內部靜態枚舉爲泛型類型?

public interface Stats<I, O> { 
    O addItem (int index, I item); 
} 

public class AStats implements Stats<Item, Result> { 
    public static enum Result { 
     SUCCESS1, 
     SUCCESS2, 
     ERROR; 
    } 

    @Override 
    public Result addItem (int index, Item item) { 
     //valid code 
    } 
} 
  • 有沒有更好的解決方案比在一個單獨的文件中聲明Result

  • 有一種方法返回一個泛型類型的實例是不是很糟糕?

+0

請注意,枚舉是隱式靜態的。 – 2013-03-20 13:56:31

+0

@PaulBellora,是的,我知道,謝謝你指出。 – 2013-03-20 13:58:11

回答

8
  1. 你的類名是AStats.Result,不Result

    public class AStats implements Stats<Item, AStats.Result> { 
        ... 
    } 
    
  2. 我不認爲返回通用的,內部類型的實例是一個壞主意。

+0

對,它現在編譯。謝謝,我很快就會接受。 – 2013-03-20 11:30:58