【发布时间】:2013-01-13 14:29:32
【问题描述】:
在(默认包)中,我有一个名为“Bird”的类,它有一个名为“dialog”的方法。
我可以在同一个包中创建一个名为 Class1 的类,如下所示:
public class Class1
{
public static void main(String[] args)
{
Bird b = new Bird("Alexander",true,5);
b.dialog("tweet!");
}
}
这确实有效,我实际上可以在控制台中看到tweet!。
我的问题是:如果Class1 位于包Fundamental 中(而类Bird 位于“默认包”中),我需要在代码中添加什么?
我收到一个错误:在这种情况下“无法识别鸟类类型”。我可能应该以某种方式指出包裹。
附带问题: 1. 什么是类路径以及如何更改它?我已经看到这个术语在几个与包相关的讨论中被模糊地使用,但没有一个像我刚刚给出的那样有明确的例子。 2. 我多次看到名为 xxx.bla.zzz 的包——这是标准吗?我通常只使用一个通用名称(不是三个用 . 分隔的名称) 我了解包是 Java 替代其他语言的名称空间。如果有几个值得一提的解决方案解决方案,我将不胜感激。谢谢!
【问题讨论】:
-
停止使用默认包。您必须导入该类或使用该类的完整包名。将 Bird 类移动到
com.blammy包中,并在 Class1 中添加“import com.blammy.Bird”或在 Class1 中将其引用为com.blammy.Bird -
谢谢戴夫,我检查了你的第一个链接,它类似于我发现不清楚的其他讨论。在我看来,它看起来非常正式且过于理论化。为什么我需要这样的命令行: java -classpath D:\myprogram;D:\myprogram\lib\supportLib.jar org.mypackage.HelloWorld ?为什么不直接在 Class1 中指出我从包 x 中调用类 Bird。如果在一个项目中我有很多这样的事件,我是否将项目搁置并分段运行并停止插入命令行,然后恢复其余的类,等等?
-
我可能在一个复杂的项目中有 20 个不同的包。我刚刚意识到我还没有测试过如果 Class1 位于主包内的包中会发生什么,甚至还有嵌套包的概念。
-
非常感谢 DwB,正是我想要的!