小编rar*_*rry的帖子

LazyLogging与StrictLogging

我正在使用scala-logging.有两个类LazyLogging和StrictLogging.我知道,它们之间的区别在于懒惰地初始化了LazyLogging.那是什么目的.当我应该使用一个而不是为什么?

scala scala-logging

7
推荐指数
1
解决办法
644
查看次数

不能隐含地将A [T]强制转换为AT,其中A [T]扩展为AT

问题与Java和Scala之间的集成有关.为了让事情更清楚,我简化了一点.

我有两个用Java编写的类:

class A<T>{}

class AT extends A<Boolean> {}
Run Code Online (Sandbox Code Playgroud)

在Java中,我有一个方法,它以下列方式使用这些类:

public  A<Boolean> a(){
    return new AT();
}
Run Code Online (Sandbox Code Playgroud)

我想在scala中做同样的事情.但是下面的代码没有编译.

def a(): A[Boolean] = {
    return new AT();
}
Run Code Online (Sandbox Code Playgroud)

消息说:"类型不匹配;找到:org.rarry.sample.AT required:org.rarry.sample.A [Boolean]"

谁能解释为什么会如此,以及如何解决这个问题?

java generics scala

6
推荐指数
1
解决办法
168
查看次数

空Java列表到Scala缓冲区

想象一下我有一个Java列表

val javaList: java.util.List[String] = null
Run Code Online (Sandbox Code Playgroud)

如果我想将其用作scala集合,比如说Buffer,我只需添加以下导入(如之前多次描述)

import scala.collection.JavaConversions._
Run Code Online (Sandbox Code Playgroud)

问题是我必须检查列表是否不同于null。这将不起作用:

javaList foreach println          //throws java.lang.NullPointerException
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法可以将java列表转换为scala集合,从而将null转换为Buffer.empty?与Option工厂相似:

Option(null)                      //> res0: Option[Null] = None
asScalaBuffer(javaList)           // I wish this to be ArrayBuffer()
Run Code Online (Sandbox Code Playgroud)

scala scala-java-interop

0
推荐指数
1
解决办法
1480
查看次数