java:接口(interface)和模板

标签 java generics casting

这似乎不起作用(编译器提示 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);
}

关于java:接口(interface)和模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2387606/

相关文章:

java - 如何获取泛型类型 T 的类实例?

generics - E0308 具有简单泛型函数的不匹配类型

generics - 使用 Rust 空类型作为通用绑定(bind)

sql - 派生表 SQL Server 2008 中的强制转换函数失败

C++:存储/记住模板类的类型

java - 如何管理需要由 AsyncTask 调用的不同任务

java - 无法在Kotlin中解析字符串到文件

java - 如何测试排序算法的稳定性?

objective-c - 如何在 ARC 下将 objective c 对象的地址获取到 void * volatile * 中?

java - Spring 批处理中的多个读取器/处理器/写入器