簡體   English   中英

您如何從Java中的LinkedList類外部聲明Node類型?

[英]How do you declare a Node type from outside the LinkedList class in Java?

如何聲明Node類型的變量? Node是LinkedList的內部類,在我正在編寫的程序的主要方法中,我想創建一個Node變量。 但是在下面的代碼片段的最后一行中,我得到了錯誤消息“ Nose在LinkedList中具有私有訪問權限”。 為什么不能使用Node類型?

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類型的方式允許您將Node添加到LinkedList ...或以其他任何方式使用它。 您可能需要從頭開始實現自己的鏈接列表類。

如果要讓Node類用於其他目的,則應聲明一個新類或在第3方庫中找到合適的類。


實際上,如果您准備好討厭,可以使用反射來破壞類型抽象。 可以實例化private類,調用private方法以及訪問/更新private字段。 但這是一個非常糟糕的主意。 首先,如果Oracle決定修改該類,那么您的反思性黑客很容易被破壞。

Node是一個類, LinkedList類在內部使用該類將每個節點的值存儲在LinkedList並且被定義為私有類,因此您不能從類外部引用它。

為了為Java中的LinkedList之類的類定義Node類型,我們使用泛型。 您可以如下定義變量

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM