2010-09-09 76 views
2

這對編譯斯卡拉2.8.0最終沒有錯誤:從斯卡拉中調用Java:受保護的構造

import javax.swing.tree.TreePath 

object A extends Application { 

    val path1 = new TreePath() 
    val path2 = new TreePath(path1, "foo") 

} 

然而,在執行我得到:

java.lang.IllegalAccessError: tried to access method javax.swing.tree.TreePath.<init>()V from class A$ 
    at A$.<init>(A.scala:5) 
    at A$.<clinit>(A.scala) 
at A.main(A.scala) 

這是一個bug,功能,或一個已知的限制?

回答

4

這是一種錯誤的排序功能。你當然應該得到訪問錯誤(功能),因爲這是受保護的應該做的。然而,編譯器應該對上下文知道足夠多的信息,並且警告你而不是將其留給運行時(bug,或者至少是候選增強)。