当前位置: 首页 > 知识库问答 >
问题:

当具有默认访问权限的类包含公共成员时,javac不会发出警告

虞修平
2023-03-14

关于下面的示例代码,虽然类测试内部的Test()构造函数是公共的,但类测试本身不是公共的,因此不能从它自己的包外部调用Test()构造函数。

这是否使public关键字变得多余?如果是这样,我想知道为什么javac在一个访问被隐式声明为default(“package private”)的类内部使用时,不发出关于public的冗余使用的警告?

package test;
class Test {
    public Test() {}
}
package main;
class Main {
    public static void main(String[] args) {
        new test.Test();  // Expected error
    }
}

需要说明的是:就是在我编译test.java的时候,我没有得到任何警告。

共有1个答案

宗政权
2023-03-14

用户对我最初的文章的评论帮助我解决了这个问题:我现在意识到IDE会给我所需要的信息,而仅仅使用javac本身不会。多谢了。

 类似资料:
  • 本文向大家介绍java类访问权限与成员访问权限解析,包括了java类访问权限与成员访问权限解析的使用技巧和注意事项,需要的朋友参考一下 在写代码的时候有个问题:包内定义了一个接口类,另外一个包要实现它,这里采用接口隔离与依赖倒置原则,将两个包的依赖关系倒置过来。但是,这里就遇到了一个问题,实现类采用工厂模式来实例化,所以实现类就不想暴露给包外,但是实现类还要实现public接口。所以这里有产生了一

  • 主要内容:简单地谈类的封装,对private和public的更多说明前面我们在定义类时多次使用到了 public 关键字,表示类的成员具有“公开”的访问权限,这节我们就来详细讲解。 C++通过 public、protected、private 三个关键字来控制成员变量和成员函数的访问权限,它们分别表示公有的、受保护的、私有的,被称为 成员访问限定符。 所谓访问权限,就是你能不能使用该类中的成员。 Java、 C# 程序员注意,C++ 中的 public、priva

  • 问题内容: 我对某些文档使用的“私有包”一词以及“默认访问”的使用感到有些困惑。包私有和默认访问不是保护的同义词吗? 问题答案: 是的,几乎一样。受保护的修饰符指定了构件只能在其自己的封装件内被访问的(与包专用)和, 另外 ,通过其类的另一个包的子类。

  • 本文向大家介绍具有公共文件访问权限集的Drupal私有文件下载,包括了具有公共文件访问权限集的Drupal私有文件下载的使用技巧和注意事项,需要的朋友参考一下 Drupal有两种允许用户下载文件的方式,它们是私有的和公共的。 在公开的情况下,任何人都可以打开文件,而Drupal则不参与下载过程。这意味着下载文件时不会记录任何统计信息或使用权限。每个文件均按名称引用。 私有文件访问意味着每次下载文件

  • 我有一个使用Java11的spring-boot项目。项目依赖于redis,所以我在pom.xml中包含了spring-boot-starter-data-redis依赖项。spring-data-redis jar有一个名为JedisClientUtils的类,它在类级别上有一个默认的访问修饰符。 当我使用mvn spring-boot:run运行这个项目时,对于JedisClientUtils

  • 我读了一大堆这么多的问题,但我似乎找不到答案。 我有以下课程: 在其他地方,我试图访问这些字符串: 为什么我会得到一个IllegalAccess异常?如果我删除field.get行,我可以在LogCat中看到以下行: 参考资料: 使用反射在Java中获取成员变量值的陷阱 反射:通过反射加载的类中的常量变量 通过反射访问Java静态最终ivar值