繁体   English   中英

Package Java 中的可见性问题

[英]Package Visibility Issue in Java

细节:

我正在尝试使用以下目录结构从命令行构建 java 项目:

proj/
    Makefile
    Main.java
    lexer
    tokens
    ast
    interpreter
    lib

问题:

我假设 Main.java 可以访问所有四个文件夹的所有classesenumsinterfacesannotations 但是,如果我想在tokens package 中使用enum ,有什么办法吗? 顺便说一句,我的意思是我应该使用哪些访问说明符来完成我的用例?

我在问这个问题之前使用的链接:

-https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html

-https://medium.com/virtuslab/on-the-missing-package-private-or-why-java-is-better-than-kotlin-in-this-regard-4a1c9ecbe40c#:~:text=The% 20default%20access%20modifier%20in,classes%20in%20the%20same%20package.&text=It%20was%20hardly%20used%20and,fields%20when%20inheritance%20was%20needed。

-http://gauss.ececs.uc.edu/Courses/c694/lectures/Visibility/visibility.html

提前致谢。

编辑:主要可以从包中导入,主要是默认的 package。

假设您使用的是 java8 及之前的版本:

  1. 默认情况下, Main将无法访问所有类和枚举
  2. Main将有权访问Main.java中定义的类和枚举
  3. Main中的方法可以访问内部类和枚举
  4. Main将有权访问在其他包中定义为public的类和枚举
  5. Main将可以访问它在其他包中扩展的类(它们应该至少受到保护)

其他类也将遵循类似的访问策略。 (主要没什么特别的)

请参考

  1. 教程
  2. 修饰符

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM