【发布时间】:2012-06-10 23:15:09
【问题描述】:
我最近刚开始学习 Java,来自 C# 背景。
当我开始使用 Collections 时,我注意到 Arrays.asList() 返回一个 ArrayList<T> 对象。
然而,我不明白的是,根据“docjar”(第 2834 行)的代码清单,将 ArrayList<T> 标记为 private。
如何使用已明确标记为对我隐藏的对象?或者(这是我怀疑的),private 是否与我假设的含义不同?
(另外,我注意到该类被标记为静态,这也让我感到困惑,但我将在单独的问题中提出)
编辑:引发编译器错误的 C# 示例:
public class PubClass {
private class Blah {
}
public Blah GetBlah() {
return new Blah();
}
}
给出:可访问性不一致:返回类型“Namespace.PubClass.Blah”比方法“Namespace.PubClass.GetBlah()”更难访问
【问题讨论】:
-
它是私有的,是的,但是一旦从方法中返回,它就可以随心所欲,就像任何“getter”方法一样。
-
但是如果它是私有的,我该如何使用它的方法和字段呢?这不是破坏安全吗?或者,换一种说法:将其标记为私有有什么意义? (如果你明白我的意思)
-
不,您将引用变量的可见性与引用或对象本身混淆了。虽然引用变量是并且将始终是私有的,但对象或引用本身并不关心或知道这一点。如果它是从方法返回的,则可以使用它。这与 C# 没有什么不同。引用既不是私有的,也不是公开的。只有变量可以是其中之一。
-
我认为私有 ArrayList 类的存在主要是为了允许序列号。
-
@HovercraftFullOfEels 它还存在以允许
RandomAccess标志到位。
标签: java list private internal