Xen*_*ate 0 java private list internal
我刚刚开始学习Java,来自C#背景.
当我开始使用Collections时,我注意到Arrays.asList()返回一个ArrayList<T>对象.
然而,我不明白的是,根据' docjar '(第2834行)的代码清单,标签ArrayList<T>为私有.
如何使用已明确标记为隐藏的对象?或者(这是我怀疑的),私人对我假设的那个有什么不同的含义吗?
(另外,我注意到该类被标记为静态,这也让我感到困惑,但我会在另一个问题中提出这个问题)
编辑:C#中抛出编译器错误的示例:
public class PubClass {
private class Blah {
}
public Blah GetBlah() {
return new Blah();
}
}
Run Code Online (Sandbox Code Playgroud)
给出:不一致的可访问性:返回类型'Namespace.PubClass.Blah'比方法'Namespace.PubClass.GetBlah()'更难访问
在ArrayList返回给你工具List,所有的包含在接口中的方法.既然List是公开的,你就知道那些方法并且可以调用它们.
ArrayList私有的原因是因为它没有理由公开:它不提供除List界面提供的任何附加功能.
/编辑
你的例子不能模仿这里发生的事情:
public interface List<T> {
/** snip */
}
public class Arrays {
private static class ArrayList<T> implements List<T> {
/** snip */
}
public <T> List<T> asList(T... arr) {
return new ArrayList<>(arr);
}
}
Run Code Online (Sandbox Code Playgroud)
在您的示例中,您尝试返回外部调用者不知道的私有类的实例.在该Arrays示例中,返回的对象实际上是a List(查看返回类型),而不是私有ArrayList.
| 归档时间: |
|
| 查看次数: |
785 次 |
| 最近记录: |