【发布时间】:2015-05-08 01:01:41
【问题描述】:
就像标题一样。为什么首先允许在私有类中使用任何修饰符?私有类在文件之外是不可见的,所以无论如何我们都无法访问它们。如果这些类中的可见性很重要,那么推荐使用哪个?
【问题讨论】:
-
相关(关于“包私有”类的相同问题):stackoverflow.com/questions/2049718/…
标签: java access-modifiers
就像标题一样。为什么首先允许在私有类中使用任何修饰符?私有类在文件之外是不可见的,所以无论如何我们都无法访问它们。如果这些类中的可见性很重要,那么推荐使用哪个?
【问题讨论】:
标签: java access-modifiers
您的私有类仍然可以实现公共接口(或扩展可访问的类)。
或者可能只是覆盖toString、equals 或hashCode(所有这些都必须是公开的)。
【讨论】:
Comparator 或 Runnable 或 Collection 并从您的方法中返回它的实例。调用该方法的代码可以在您的私有类实例上调用 compare 或 run 或 size。
Test.Nested 类型不可见,但您可以将其键入为Object(或Runnable 或它具有的任何接口)。 Object x = test.methodReturnsMyPrivateInstance(); x.toString();
private class MyComparator implements Comparator<Me>,您可以从public Comparator<Me> createComparator() 方法返回该类的实例,调用者可以将返回的引用分配给Comparator<Me> 类型的变量。
一个区别:privateClass.getMethods 将只返回公共方法
另一个:一些工具,比如 JAXB,可能正在寻找公共的 setter/getter
【讨论】: