gpt4 book ai didi

java - 使用内部类在java/内部方法可见性中为外部类创建私有(private)记录

转载 作者:行者123 更新时间:2023-11-30 07:02:29 25 4
gpt4 key购买 nike

我必须实现一个名为 Graph<E> 的接口(interface)在 java 。

比方说MyGraph<E extends Comparable<E>>是我正在编写的用于实现 Graph 的类。

我想创建一个内部类Node为了“封装”类型 E 的元素.

public class MyGraph<E extends Comparable<E>> implements Graph<E>{


MyGraph methods and instance variables...
.
.
.



class Node {
E elem;
List<E> edges;
...
public Node(E e){
this.elem = e;
edges = null;
}
}
}

问题是我不明白内部类是否应该是 NodeNode<E> , publicprivate如果它的实例变量应该声明为 publicprivate 。对于我将插入 Node 中的一些 final方法也是如此。

基本上,Node 类应该像 C 中的记录类型(带有 typedef ),并且外部类应该能够访问 Node 的所有实例变量无需观察者 setter/getter 等

最佳答案

您应该将 Node 类声明为 private static,因为它不需要访问外部类的成员。如果不这样做,每个实例都将携带对实例化实例的引用。您需要给它一个参数才能执行此操作。

如果您使用 E 作为参数名称,它将隐藏外部类中的 E,因此为了清楚起见,请考虑给它一个不同的名称。您的外部类将具有对 Node 成员的完全访问权限,并且如果 Node 是私有(private)的,则任何其他类都不会具有访问权限,因此您无需担心成员的访问级别 - 只需忽略它们即可。

关于java - 使用内部类在java/内部方法可见性中为外部类创建私有(private)记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40664446/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com