[英]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
。 所以,如果你想訪問size
和name
,你必須這樣做: -
node.getMyData().getSize();
node.getMyData().getName();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.