決議摘要,我以爲我正在處理一個斯卡拉問題,但事實證明秒錶和斯卡拉日誌記錄有私人構造函數,我沒有調用適當的公共方法來實例化他們。下面的gzm0的答案指出了這一點。斯卡拉「構造函數秒錶不能在類主要訪問」
試圖用番石榴秒錶和Scala記錄,無論我在主或在實例化類中創建一個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,但它沒有一個可接受的答案,並且我嘗試了(只是爲了好玩)將我的parens從我的構造函數調用中無效。
編寫我的第一個Gradle/Scala項目分析算法分配。我想如果我在Java中,我會問靜態與非靜態,不知道這是我正在處理的問題的類型。斯卡拉不屬於任務的一部分,所以我沒有使用作業標籤。
這裏是如何,我打電話給他們,我的計劃的第一部分,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()
正如你可以看到我已經試圖通過使簡化這一點,所有的一個對象,並通過在主實例記錄器和秒錶並將它們傳遞給班級(我知道的不好主意),但沒有任何作用。我在這裏錯過了什麼簡單的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
'(對於(I' - 10..20; J =的runTest(i))的產率I - > j)的.toMap' – Eduardo
@Eduardo錯誤的問題LOL我將試試看,其他人的回答是被接受的,因爲他能夠給出關於構建如何解釋事物的解釋......你也非常有幫助,那麼這個問題呢?謝謝 – JimLohse
對不起。我不熟悉番石榴。它看起來好像你試圖直接訪問一個私有構造函數。您可能需要調用一些工廠方法來創建實例。有些Java庫像這樣工作,但我不確定。 – Eduardo