在内部类中声明为private的变量的范围是什么?例如,下面给出的代码中的关键变量的范围是什么。
package redblacktrees;
public class RedBlackTrees<Key extends Comparable <Key>,Val> {
private Node root;
private class Node
{
private Key key; //what is thescope of this variable
private Val val;
private Node left, right;
}
public Val get(Key key)
{
Node x = root;
while(x != null)
{
int cmp = key.compareTo(x.key);
if(cmp < 0)
x = x.left;
else if(cmp > 0)
x = x.right;
else
return x.val;
}
return null;
}
}
答案 0 :(得分:2)
范围介于{
的{{1}}和}
之间,但只要您提供明确的路径,Node
下的任何代码都可以访问该范围。
BTW当您以这种方式访问私有成员时,RedBlackTrees
编译器必须添加访问器方法,这些方法不会减慢代码的速度,但可能会产生令人困惑的堆栈跟踪。为简单起见,我会让成员“打包本地”。