草庐IT

semi-public

全部标签

java - 为什么你会想要一个没有在其中声明公共(public)类的 Java 文件?

我正在为SCJP资格阅读的书中有一个声明,上面写着:Fileswithnopublicclasseshavenonamingrestrictions这让我问,你为什么要这样做?如果没有公共(public)类,那么其他类如何导入和使用该文件?我能看到的唯一目的是文件本身是否独立运行,这也可能很奇怪,例如在一个文件中包含整个应用程序 最佳答案 这对package-private有效类(class)也是如此。您可以在同一个包中使用包私有(private)类。(在这种情况下,您不必导入它,因为它在同一个包中。)例如,JapaneseImpe

java - 为什么你会想要一个没有在其中声明公共(public)类的 Java 文件?

我正在为SCJP资格阅读的书中有一个声明,上面写着:Fileswithnopublicclasseshavenonamingrestrictions这让我问,你为什么要这样做?如果没有公共(public)类,那么其他类如何导入和使用该文件?我能看到的唯一目的是文件本身是否独立运行,这也可能很奇怪,例如在一个文件中包含整个应用程序 最佳答案 这对package-private有效类(class)也是如此。您可以在同一个包中使用包私有(private)类。(在这种情况下,您不必导入它,因为它在同一个包中。)例如,JapaneseImpe

java - 公共(public)类与公共(public)静态内部类的异常

我有两个选项(据我了解,它们在技术上是相同的)来声明仅从特定类com.XXX.Foo抛出的自定义异常类:作为包中的公共(public)类:com.XXX.CustomException作为公共(public)静态内部类:com.XXX.Foo.CustomException哪个选项更好? 最佳答案 如果异常是非常特定于Foo类的,我不介意将其保留为public嵌套类。每当需要提取它时,只需提取它即可。不过,在一般实践中,我从未见过任何为Exception定义的嵌套类。我也不知道JavaAPI中是否存在。

java - 公共(public)类与公共(public)静态内部类的异常

我有两个选项(据我了解,它们在技术上是相同的)来声明仅从特定类com.XXX.Foo抛出的自定义异常类:作为包中的公共(public)类:com.XXX.CustomException作为公共(public)静态内部类:com.XXX.Foo.CustomException哪个选项更好? 最佳答案 如果异常是非常特定于Foo类的,我不介意将其保留为public嵌套类。每当需要提取它时,只需提取它即可。不过,在一般实践中,我从未见过任何为Exception定义的嵌套类。我也不知道JavaAPI中是否存在。

java - 没有声明为 public、private 或 protected 的变量是什么?

如果不是:privateJButtontheButton;我这样定义一个字段:JButtontheButton;有什么区别? 最佳答案 包。它们对同一包中的其他类可见。FWIW,我通常在这些上使用我自己的无操作@Package注释,只是为了清楚地表明我知道我在做什么——我不只是忘记了一些东西。尽管它是默认设置,但包访问在高质量代码中的使用可能比其他三种可能性中的任何一种都少——有一个很大的异常(exception):在某些风格的单元测试中,希望能够访问通常是私有(private)的方法或字段。提供访问的一种方法是将它们设置为包访问,

java - 没有声明为 public、private 或 protected 的变量是什么?

如果不是:privateJButtontheButton;我这样定义一个字段:JButtontheButton;有什么区别? 最佳答案 包。它们对同一包中的其他类可见。FWIW,我通常在这些上使用我自己的无操作@Package注释,只是为了清楚地表明我知道我在做什么——我不只是忘记了一些东西。尽管它是默认设置,但包访问在高质量代码中的使用可能比其他三种可能性中的任何一种都少——有一个很大的异常(exception):在某些风格的单元测试中,希望能够访问通常是私有(private)的方法或字段。提供访问的一种方法是将它们设置为包访问,

java - 为什么 Java 8 不允许非公共(public)默认方法?

举个例子:publicinterfaceTesterface{defaultpublicStringexample(){return"Hello";}}publicclassTesterimplementsTesterface{@OverridepublicStringexample(){returnTesterface.super.example()+"world!";}}publicclassInternet{publicstaticvoidmain(String[]args){System.out.println(newTester().example());}}很简单,这将打印

java - 为什么 Java 8 不允许非公共(public)默认方法?

举个例子:publicinterfaceTesterface{defaultpublicStringexample(){return"Hello";}}publicclassTesterimplementsTesterface{@OverridepublicStringexample(){returnTesterface.super.example()+"world!";}}publicclassInternet{publicstaticvoidmain(String[]args){System.out.println(newTester().example());}}很简单,这将打印

java - 为什么我们应该将接口(interface)方法声明为公共(public)的?

这个问题在这里已经有了答案:ProtectedinInterfaces(15个回答)关闭5年前.当我实现一个interface方法时,我不得不将其设为public方法。在某些情况下,我们可能想要使用default(例如在同一个包中访问的情况)或protected。谁能解释一下这个限制背后的原因? 最佳答案 接口(interface)旨在定义一种类型的publicAPI-仅此而已,而不是其实现。因此,您在接口(interface)中定义的任何方法(或静态成员)按定义都是public。由于接口(interface)不能包含任何具体实现,

java - 为什么我们应该将接口(interface)方法声明为公共(public)的?

这个问题在这里已经有了答案:ProtectedinInterfaces(15个回答)关闭5年前.当我实现一个interface方法时,我不得不将其设为public方法。在某些情况下,我们可能想要使用default(例如在同一个包中访问的情况)或protected。谁能解释一下这个限制背后的原因? 最佳答案 接口(interface)旨在定义一种类型的publicAPI-仅此而已,而不是其实现。因此,您在接口(interface)中定义的任何方法(或静态成员)按定义都是public。由于接口(interface)不能包含任何具体实现,