【发布时间】:2016-05-01 06:05:42
【问题描述】:
解决方案总结,我以为我正在处理 Scala 问题,但事实证明 Stopwatch 和 Scala Logging 具有私有构造函数,并且我没有调用正确的公共方法来实例化它们。 gzm0 在下面的回答指出了这一点。
尝试使用 Guava 秒表和 Scala 日志记录,无论我是在 Main 中还是在实例化类中创建 new Stopwatch() 或 new Logger(),我都会收到 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()
如果这是 this 或 this 问题的重复,我不知道如何实现它。我查看了this question,但它没有一个可接受的答案,我尝试(只是为了好玩)将我的括号从我的构造函数调用中去掉。
编写我的第一个 Gradle/Scala 项目以进行算法分析作业。我正在处理的问题。 Scala 不是作业的一部分,所以我没有使用作业标签。
这是我如何称呼它们以及我的程序的第一部分,the full .scala file and the build.gradle are on 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()
如您所见,我尝试通过将其全部设为一个对象,并通过在 Main 中实例化 Logger 和 Stopwatch 并将它们传递给类(我知道这是个坏主意)来简化这一点,但这些都不起作用。我在这里缺少什么简单的 Scala 东西?谢谢。
否则我相信我在项目中正确地拥有了我的所有依赖项,并且我在命令行上得到了同样的错误。
我确实还有一个错误I posted as a separate question here,,以防万一,错误是:
/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
【问题讨论】:
-
(for(i <- 10..20; j=runTest(i)) yield i -> j).toMap -
@Eduardo 错误的问题大声笑我会试试看,其他人的回答被接受了,因为他能够给出关于构建如何解释事物的解释......你也很有帮助,如何关于这个问题?谢谢
-
对不起。我对番石榴不熟悉。看起来好像您试图直接访问私有构造函数。您可能不得不调用一些工厂方法来创建实例。一些 Java 库就是这样工作的,但我不确定。
-
我不认为它是番石榴或秒表,我认为它是 Scala-ish。谢谢!我们会看看出现了什么,在另一页上编辑我的问题以反映各种建议。 :)
-
我再次得到纠正,再次感谢@Eduardo gzm0 也得到了这个
标签: scala constructor guava slf4j