Scala“无法在Main类中访问构造函数秒表”

Jim*_*hse 2 constructor scala slf4j guava

关于分辨率的摘要,我认为我正在处理一个Scala问题,但事实证明Stopwatch和Scala Logging具有私有构造函数,并且我没有调用适当的公共方法来实例化它们。以下gzm0的答案指出了这一点。


尝试使用Guava秒表和Scala日志记录,无论我是在Main中还是在实例化类中创建一个,new Stopwatch()还是new Logger()在Main类中创建此错误,我都将遇到以下错误gradle run

constructor Logger in class Logger cannot be accessed in class RedBlackTree4150
var loggerInst = new Logger()
constructor Stopwatch in class Stopwatch cannot be accessed in class RedBlackTree4150
var stopWatchInst = new Stopwatch()
Run Code Online (Sandbox Code Playgroud)

如果这是一个重复的这个这个问题我不知道够不够去实现它。我看了这个问题,但没有一个可接受的答案,我试图(只是为了好玩)将我的构造函数调用中的内容删除了,但没有用。

编写我的第一个Gradle / Scala项目以进行算法分配分析。我想如果我是在Java中,我会问的是静态还是非静态,不知道那是我要处理的问题类型。Scala不是作业的一部分,所以我没有使用作业标签。

这是我的调用方式,程序的第一部分,完整的.scala文件和build.gradle位于Github上

import com.google.common.base.Stopwatch
import com.typesafe.scalalogging.slf4j.Logger
import scala.collection.immutable.TreeMap
import java.util.concurrent.TimeUnit

object Main extends App {
  // var rbtree = new RedBlackTree4150(logger, stopWatch)
  var rbtree = new RedBlackTree4150()
}
// class RedBlackTree4150 (var loggerInst: Logger, var stopWatchInst: Stopwatch) {
class RedBlackTree4150() {
  var loggerInst = new Logger()
  var stopWatchInst = new Stopwatch()
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经尝试通过将其全部变成一个对象,并在Main中实例化Logger和Stopwatch并将它们传递给类(我知道这是个坏主意)来简化此操作,但这些都不起作用。我在这里缺少什么简单的Scala东西?谢谢。


否则,我相信我在项目中拥有所有依赖项,并且在命令行上遇到相同的错误。

我确实还有一个错误,我在此处作为一个单独的问题发布,以防万一它是相关的,错误是:

/home/jim/workspace/Scala/RedBlackTree4150/src/main/scala/Main.scala:36: value map is not a member of Double
  timingsMap = for (i <- powersList; j <- runTest(i)) yield i -> j
Run Code Online (Sandbox Code Playgroud)

gzm*_*zm0 5

两者的构造StopwatchLogger是私有的。您需要使用工厂方法来实例化它们。

对于Stopwatch,您可以使用createUnstarted()方法:

val stopwatch = Stopwatch.createUnstarted()
Run Code Online (Sandbox Code Playgroud)

如果是Logger,则必须使用apply方法。但是,它需要底层的SLF4J记录器。您可以通过SLF4J创建一个LoggerFactory

import org.slf4j.LoggerFactory
val logger = Logger(LoggerFactory.getLogger(getClass))
Run Code Online (Sandbox Code Playgroud)


归档时间:

查看次数:

3519 次

最近记录:

9 年,11 月 前