Java 错配;找到:net.sf.uadetector.ReadableUserAgent必需:无

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

我试图在scala中转换这段代码,但遇到了一些困难

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所有完整的代码都在您面前,请提供帮助