Java 错配;找到:net.sf.uadetector.ReadableUserAgent必需:无
我试图在scala中转换这段代码,但遇到了一些困难Java 错配;找到:net.sf.uadetector.ReadableUserAgent必需:无,java,scala,caching,playframework,Java,Scala,Caching,Playframework,我试图在scala中转换这段代码,但遇到了一些困难 object CachedUserAgentStringParser extends UserAgentStringParser { private val parser = UADetectorServiceFactory.getCachingAndUpdatingParser private val cache = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrit
object CachedUserAgentStringParser extends UserAgentStringParser {
private val parser = UADetectorServiceFactory.getCachingAndUpdatingParser
private val cache = CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(2, TimeUnit.HOURS)
.build()
override def getDataVersion(): String = parser.getDataVersion
override def parse(userAgentString: String): ReadableUserAgent = {
var result = cache.getIfPresent(userAgentString)
if (result == null) {
result = parser.parse(userAgentString)
cache.put(userAgentString, result)
}
result
}
override def shutdown() {
parser.shutdown()
}
}
获取错误类型
mismatch; found : net.sf.uadetector.ReadableUserAgent required: Nothing
result = parser.parse(userAgentString)
^
cache.put(userAgentString, result)
^
您需要为
缓存变量指定类型参数
private val cache: Cache[String, ReadableUserAgent] =
CacheBuilder.newBuilder().maximumSize(100).expireAfterWrite(2, TimeUnit.HOURS).build()
下面是一个可编译的示例:看起来您在创建解析器和缓存时没有指定适当的类型参数,所以编译器将它们推断为空。@om nom nom所有完整的代码都在您面前,请提供帮助