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別のファイルで宣言するよりもエレガントなソリューションはありますか?

  • 一般的に、ジェネリック型のインスタンスを返すメソッドを持つのは悪いことですか?

4

1 に答える 1

8
  1. あなたのクラス名はAStats.Resultであり、 ではありませんResult:

    public class AStats implements Stats<Item, AStats.Result> {
       ...
    }
    
  2. ジェネリックな内部型のインスタンスを返すことは悪い考えだとは思いません。

于 2013-03-20T11:25:33.673 に答える