是否可以在Java中导入默认包中的类?如果是这样,语法是什么?例如,如果你有
package foo.bar;
public class SomeClass {
// ...
Run Code Online (Sandbox Code Playgroud)
在一个文件中,你可以写
package baz.fonz;
import foo.bar.SomeClass;
public class AnotherClass {
SomeClass sc = new SomeClass();
// ...
Run Code Online (Sandbox Code Playgroud)
在另一个文件中.但是,如果SomeClass.java不包含包声明呢?你将如何参考SomeClass的AnotherClass?
我在访问根包中定义的对象时遇到问题.如果我将所有代码都放在一个文件中,它可以正常工作,但是当我将它分成两个文件时,我无法通过编译器.
这很好用:
所有在一个文件中称为packages.scala:
object Foo
val name = "Brian"
}
package somepackage {
object Test extends App {
println(Foo.name)
}
}
Run Code Online (Sandbox Code Playgroud)
见证人:
$ scalac packages.scala
$ scala -cp . somepackage.Test
Brian
Run Code Online (Sandbox Code Playgroud)
但是如果我将代码分成两个文件:
packages.scala
object Foo {
val name = "Brian"
}
Run Code Online (Sandbox Code Playgroud)
packages2.scala
package somepackage {
object Test extends App {
println(Foo.name)
}
}
Run Code Online (Sandbox Code Playgroud)
一切都失败了:
$ scalac packages.scala packages2.scala
packages2.scala:3: error: not found: value Foo
Run Code Online (Sandbox Code Playgroud)
所以我尝试引用Foo绝对:
...
println(_root_.Foo.name)
...
Run Code Online (Sandbox Code Playgroud)
但这也不起作用:
$ scalac packages.scala packages2.scala
packages2.scala:3: error: object …Run Code Online (Sandbox Code Playgroud)