2010-09-09 29 views
2

Cette compile sans erreur sur Scala 2.8.0 final:Appel Java de Scala: constructeur protégé

import javax.swing.tree.TreePath 

object A extends Application { 

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

} 

Cependant, sur l'exécution je reçois:

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) 

Est-ce un bug, la fonction ou une limitation connue?

Répondre

4

Ceci est une sorte de bug, sorte de fonctionnalité. Vous devriez certainement obtenir l'erreur d'accès (fonctionnalité) parce que c'est ce que la protection est censée faire. Le compilateur devrait sans doute en savoir assez sur le contexte pour être capable de dire, cependant, et vous avertir au lieu de le laisser à l'exécution (bug, ou au moins candidat à l'amélioration).