Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何用静态值定义内部类并使其能够访问外部类对象_Java_Class - Fatal编程技术网

Java 如何用静态值定义内部类并使其能够访问外部类对象

Java 如何用静态值定义内部类并使其能够访问外部类对象,java,class,Java,Class,我想定义这样一个类: class Tree{ ArrayList<Node> nodes; //... class Node{ static int n = 0; private int id; public Node(){ id = n++; Tree.this.nodes.add(this); } } } 类树{ 阵列列表节点; //.

我想定义这样一个类:

class Tree{
    ArrayList<Node> nodes;
    //...
    class Node{
        static int n = 0;
        private int id;
        public Node(){
            id = n++;
            Tree.this.nodes.add(this);
        }
    }
}
类树{
阵列列表节点;
//...
类节点{
静态int n=0;
私有int-id;
公共节点(){
id=n++;
Tree.this.nodes.add(this);
}
}
}

似乎如果我定义
static int n=0
节点必须是
static
。当我在
节点上添加
静态
时,
树。此
不起作用。我该怎么办?

如果满足您的需要,您可以尝试以下方法:-

class Tree{
    ArrayList<Node> nodes;
    private static int n = 0;
    //...
    class Node{
        private int id;
        public Node(){
            id = n++;
            Tree.this.nodes.add(this);
        }
    }
}
类树{
阵列列表节点;
私有静态int n=0;
//...
类节点{
私有int-id;
公共节点(){
id=n++;
Tree.this.nodes.add(this);
}
}
}

如果满足您的需要,您可以尝试以下方法:-

class Tree{
    ArrayList<Node> nodes;
    private static int n = 0;
    //...
    class Node{
        private int id;
        public Node(){
            id = n++;
            Tree.this.nodes.add(this);
        }
    }
}
类树{
阵列列表节点;
私有静态int n=0;
//...
类节点{
私有int-id;
公共节点(){
id=n++;
Tree.this.nodes.add(this);
}
}
}

如果满足您的需要,您可以尝试以下方法:-

class Tree{
    ArrayList<Node> nodes;
    private static int n = 0;
    //...
    class Node{
        private int id;
        public Node(){
            id = n++;
            Tree.this.nodes.add(this);
        }
    }
}
类树{
阵列列表节点;
私有静态int n=0;
//...
类节点{
私有int-id;
公共节点(){
id=n++;
Tree.this.nodes.add(this);
}
}
}

如果满足您的需要,您可以尝试以下方法:-

class Tree{
    ArrayList<Node> nodes;
    private static int n = 0;
    //...
    class Node{
        private int id;
        public Node(){
            id = n++;
            Tree.this.nodes.add(this);
        }
    }
}
类树{
阵列列表节点;
私有静态int n=0;
//...
类节点{
私有int-id;
公共节点(){
id=n++;
Tree.this.nodes.add(this);
}
}
}

不要使用内部类。将树实例传递给节点构造函数。@ElliottFrisch,但内部类就是为了这个目的而创建的。。。当内部类专门为此而创建时,如何用额外的引用证明代码凌乱?不要使用内部类。将树实例传递给节点构造函数。@ElliottFrisch,但内部类就是为了这个目的而创建的。。。当内部类专门为此而创建时,如何用额外的引用证明代码凌乱?不要使用内部类。将树实例传递给节点构造函数。@ElliottFrisch,但内部类就是为了这个目的而创建的。。。当内部类专门为此而创建时,如何用额外的引用证明代码凌乱?不要使用内部类。将树实例传递给节点构造函数。@ElliottFrisch,但内部类就是为了这个目的而创建的。。。当内部类专门为此而创建时,如何用额外的引用证明代码凌乱?IIRC
n
将需要默认可见性,但我可能错了。@Qix内部类可以访问外部类的成员,反之亦然。还要注意,这将为每个
节点创建一个唯一的id,即使来自不同的树。要单独索引每个树节点,只需从
n
中删除
static
修饰符即可。IIRC
n
将需要默认可见性,但我可能错了。@Qix内部类可以访问外部类的成员,反之亦然。还要注意,这将为每个
节点创建一个唯一的id,即使来自不同的树。要单独索引每个树节点,只需从
n
中删除
static
修饰符即可。IIRC
n
将需要默认可见性,但我可能错了。@Qix内部类可以访问外部类的成员,反之亦然。还要注意,这将为每个
节点创建一个唯一的id,即使来自不同的树。要单独索引每个树节点,只需从
n
中删除
static
修饰符即可。IIRC
n
将需要默认可见性,但我可能错了。@Qix内部类可以访问外部类的成员,反之亦然。还要注意,这将为每个
节点创建一个唯一的id,即使来自不同的树。要单独索引每个树节点,只需从
n
中删除
static
修饰符即可。