java 类声明自己,Java:一个文件中的多个类声明

本文讨论了Java编程中的一项重要规范:顶级类与源文件名应保持一致。当一个类在不同文件中被引用,如果没有遵循这一规则,javac编译器将无法找到对应的源文件,导致编译失败。这种情况下,需要确保编译时包含所有相关源文件,或者已编译过相关类,以避免构建过程的不稳定性。遵循每个文件一个顶级类的约定有助于简化构建过程和提高代码组织的清晰度。
摘要由CSDN通过智能技术生成

javac没有主动禁止这一点,但它确实有一个限制,几乎意味着你永远不想从另一个文件引用顶级类,除非它与它所在的文件具有相同的名称 .

假设您有两个文件,Foo.java和Bar.java .

Foo.java包含:

公共课Foo

Bar.java包含:

公共类酒吧

class Baz

我们还要说所有类都在同一个包中(并且这些文件位于同一目录中) .

如果Foo.java引用Baz而不是Bar并且我们尝试编译Foo.java会发生什么?编译失败,出现如下错误:

Foo.java:2: cannot find symbol

symbol : class Baz

location: class Foo

private Baz baz;

^

1 error

如果你考虑一下,这是有道理的 . 如果Foo.java引用了Baz,但是没有Baz.java(或Baz.class),javac怎么知道要查看哪个源文件?

如果您改为告诉javac同时编译Foo.java和Bar.java,或者即使您之前编译过Bar.java(留下了javac可以找到它的Baz.class),那么这个错误就会消失 . 但是,这会使您的构建过程感觉非常不可靠和不稳定 .

因为实际的限制,更像是“不要从另一个文件引用顶级类,除非它与它所在的文件具有相同的名称,或者你也指的是同一个文件中的一个类名称与文件“有点难以理解的东西相同,人们通常会选择在每个文件中放置一个顶级类的更简单(尽管更严格)的约定 . 如果您改变主意是否应该公开课程,这也会更好 .

有时,每个人都以某种特定的方式做某事真的有充分的理由 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值