繁体   English   中英

如何使用课堂 <Interface> Java中的方法签名

[英]How to use Class<Interface> in method signature in Java

我正在尝试声明一个方法,该方法将采用实现接口的任何类作为其参数。 例:

interface ICache {...}
class SimpleCache implements ICache {...}

void doSomething(Class<ICache> cls) { /* Do something with that class */ }

但是,当我尝试使用SimpleCache.class调用它时,它不起作用。 我该如何实施?

如何更改方法签名

void doSomething(Class<? extends ICache> cls) {

您需要引入一个类型参数:

<T extends ICache> void doSomething(Class<T> cls) { /* Do something with that class */ }

在Java中, 即使BA继承Class<B>也不是Class<A> 这就是为什么它不能与SimpleCache.class一起编译的原因: Class<SimpleCache>不是Class<ICache>

因此,解决方案是引入类型T :我们说这种方法可以采用T extends ICache任何类Class<T> 由于SimpleCache遵守该限制,因此可以正常编译。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM