簡體   English   中英

替換一個對象的多個變量?

[英]Replacing multiple variables for one object?

我的工作是:

將Node類修改為通用類,以便它可以處理下面顯示的文件系統中的文件夾和文件。

並且:

首先,您需要修改Node類,以便'size'和'name'都將被一個對象替換。

現在,我做了第一部分,我們將類更改為使用泛型類型。 我陷入了第二個問題。 我不知道如何傳遞單個對象而不是2個變量,然后在其中進行一堆計算。

我如何在這里用單個對象替換多個變量? 我一直在嘗試更改類型並移動一些東西,但是一旦刪除這兩個變量,我的代碼就會一直失敗。

碼:

class Node<T>
   {
   public String name;
   public int size;
   public Node<T> leftChild;
   public Node<T> rightChild;

   public void displayNode()
      {
      System.out.print('{');
      System.out.print(name);
      System.out.print(", ");
      System.out.print(size);
      System.out.print("} ");
      }
   }  // end class Node

我會像這樣重新設計它:

class Node<T> {
    public T data;
    public Node<T> leftChild;
    public Node<T> rightChild;

    public void displayNode() {
        System.out.print('{');
        System.out.print(data.toString());
        System.out.print("} ");
   }
   . . .
}

編輯重寫find方法的一種方法是找到一個特定的T值:

public Node<T> find(Comparable<T> target) {
    Node<T> current = root;
    int comp = target.compareTo(current.data);
    while (comp != 0) {
        if (comp < 0)
            current = current.leftChild;
        else
            current = current.rightChild;
        if(current == null)
            return null;
    }
    return current;
}

您需要創建Custom Data Class 該類將所需的變量包裝為屬性。

例如,在您的情況下: -

public class MyData {
    private String name;  // Your data are enclosed in the data object MyData
    private int size;

    /** Constructors **/
    /** Getters and Setters **/
}

現在,無論何處,您正在使用這些變量,請使用此類的實例。 根據@TedHopp的答案 ,您的通用課程將會改變。

你的Node類將被實例化如下: -

Node<MyData> node = new Node<MyData>();

所以,你的T現在變成了MyData 所以,如果你想訪問sizename ,你必須這樣做: -

node.getMyData().getSize();
node.getMyData().getName();

暫無
暫無

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

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