很难为情地问这个问题很可能很简单,但似乎找不到答案.

我有一个可缓存的接口

/**
    K denotes the type of the key of a cacheable object
*/
public interface Cacheable<K extends Serializable> extends Serializable{
   K getKey();
}

然后我有一个缓存来存储可缓存的内容

/**
 Cache that can store an object of type T and it's key which is of type K
*/

public interface Cache<K, T extends Cacheable>{
   Optional<T> get(K key);
   T put(T cacheable);
}

虽然这会起作用,但我希望这更好,因为上面没有表示t和K之间的关系.换句话说,t.getKey应该返回K的事实在这里并不强制.

我一直在寻找下面的东西,但显然它是不可编译的.我该怎么做?

public interface Cache<K, T<K> extends Cacheable<K>>

推荐答案

Java中不能有高阶泛型(这就是为什么你的T<K>技巧不能编译),但你可以有其他泛型的bounded阶泛型.我相信你在寻找

public interface Cache<K, T extends Cacheable<K>>

Java相关问答推荐

在没有maven或IDE的情况下从命令行运行PFA模块化应用程序时出现神秘错误

Java中Stream(java.util.stream)和linkedList数据 struct 之间是什么关系?

如何从片段请求数据到活动?在主要活动中单击按钮请求数据?

将Nimbus设置为计算机上运行的所有Java应用程序的默认外观

Java 22模式匹配不适用于记录模式匹配.给出汇编问题

将linkedHashMap扩展到Java中的POJO类

无法处理批处理侦听器中的反序列化异常

现场观看Android Studio中的变化

通过合并Akka Streams中的多个慢源保持订购

如何从错误通道回复网关,使其不会挂起

无法使用ApacheSpark依赖项构建JavaFX应用程序

Sack()步骤中的合并运算符未按预期工作

我的Spring Boot测试显示&IlLegalStateException:无法加载某事的ApplicationContext.

将JSON字符串转换为Java类

JNI:将代码打包成自包含的二进制文件

IntelliJ IDEA依赖项工具窗口丢失

在Spring Boot JPA for MySQL中为我的所有类创建Bean时出错?

JavaFX复杂项目体系 struct

当我将JTextField的getText函数与相等的String进行比较时;t返回true

Spring Boot Security-每个端点都被403禁止,Spring记录一个BasicErrorController#错误(HttpServlet请求)