替换一个对象的多个变量?

时间:2012-11-06 05:34:59

标签: java oop 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

2 个答案:

答案 0 :(得分:2)

我会像这样重新设计它:

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;
}

答案 1 :(得分:1)

您需要创建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的answer,您的通用类将会被更改。

您的Node课程将如下实例化: -

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

因此,您的T现在变为MyData。因此,如果您想访问sizename,则必须这样做: -

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