如何在Java中从LinkedList类外部声明Node类型



如何声明Node类型的变量?Node是LinkedList的内部类,在我编写的程序的主要方法中,我想创建一个Node变量。但在下面代码片段的最后一行,我得到了错误消息"Nose在LinkedList中具有私有访问权限"。为什么我不能使用节点类型?

import java.util.LinkedList;
public class MinSplit {
    public static long leastAmount;
public static void main(String args[]) {
    LinkedList list = new LinkedList();
    LinkedList.Node node = new LinkedList.Node();

为什么我不能使用Node类型?

因为它被声明为private。它是LinkedList类的内部实现细节,您应该没有理由创建实例。很明显,这是Java团队深思熟虑的设计决定,目的是保持API的清洁,避免人们破坏列表数据结构所造成的问题。

如果您想实例化Node类,以便对LinkedList执行某种操作,请三思。没有一个公共API以允许您将Node添加到LinkedList的方式公开Node类型。。。或者以任何其他方式使用它。您可能需要实现自己的链表类。。。从头开始。

如果您希望Node类用于其他目的,则应该声明一个新类或在第三方库中找到合适的类。


实际上,如果你准备好了让ri变得讨厌,那么就有可能使用反射来打破类型抽象。可以实例化private类、调用private方法和访问/更新private字段。但这真是个坏主意。首先,如果Oracle决定修改类,那么您的反思性黑客很可能会崩溃

NodeLinkedList类内部使用的一个类,用于存储LinkedList中每个节点的值,并且被定义为私有类,因此不能从类外部引用它。

为了在Java中为LinkedList之类的类定义Node类型,我们使用泛型。你可以定义你的变量如下

LinkedList<String> varName = new LinkedList<>();

最新更新