Es gibt eine Schnittstelle CacheManager.java von Shiro.Wie generische Funktion der Schnittstelle in Kotlin zu implementieren?
package org.apache.shiro.cache;
public interface CacheManager {
<K, V> Cache<K, V> getCache(String var1) throws CacheException;
}
Ich schrieb eine Klasse DefaultCacheManager.kt, die den CacheManager implementiert.
open class DefaultCacheManager : CacheManager {
@Throws(CacheException::class)
override fun getCache(name: String): Cache<Any, Any> {
return InnerCache(name)
}
}
class InnerCache(var name: String) : Cache<Any, Any> {
//.... omitted ....
}
Der obige Code würde Kompilierungsfehler verursachen.
Conflicting overloads:
@Throws public open fun getCache(name: String): Cache<Any, Any> defined in com.yootai.oms.permission.DefaultCacheManager,
public abstract fun <K : Any!, V : Any!> getCache(p0: String!): Cache<K!, V!>! defined in org.apache.shiro.cache.CacheManager
Dann habe ich meinen Code unten geändert.
override fun <K : Any?, V : Any?> getCache(name: String): Cache<K, V> {
return InnerCache(name)
}
Aber es würde mir eine Kompilierungsfehlerinfo geben.
Type mismatch.
Required: Cache<K,V>
Found: InnerCache
Wie kann ich das Problem beheben? Bitte hilf mir.
Es funktioniert für mich. Vielen Dank für Ihre Antwort – Iconoclast