这似乎不起作用(编译器抱怨SomethinggetFoo()方法未实现HasFoo),而且我不知道为什么或如何解决它。

enum FooKey { BLOB1, DONUT, ... }

interface HasFoo
{
   public Object getFoo(FooKey k);
}

class Something implements HasFoo
{
    private Map<FooKey, Object> map;

    @SuppressWarnings("unchecked")
    @Override
    <T> T getFoo(FooKey k)
    {
        return (T)map.get(k);
    }

    /* other stuff deleted */
}


我既需要界面,也希望能够做类似的事情

Something something = ...
Blob blob1 = something.getFoo(FooKey.BLOB1);
Donut donut = something.getFoo(FooKey.DONUT);

最佳答案

这不行吗?

interface HasFoo
{
   public <T> T getFoo(FooKey k);
}

07-25 23:34