gpt4 book ai didi

java - 我如何参数化这个 Java 泛型?

转载 作者:行者123 更新时间:2023-12-01 13:16:18 25 4
gpt4 key购买 nike

我正在用 Java 构建一个通用的二叉树类。我以前没有太多地使用泛型,所以我不知道我这样做是否正确。这是一些代码,后面是我的问题:

public class Node<T> {

T data;
Node<T> left, right;
//assume setters and getters
}


public class BinaryTree<T extends Comparable <T>> {

private Node<T> root;

//assume typical setter/getter and insert, delete, etc methods

public void inOrderTraversal() {

//create instance of the inorder class here and call its traverse() method.
}
}
//define a family of algorithms for preorder, inorder and postorder traversals
public interface BinaryTreeTraversal {

public void traverse();

}
//of course there will be a class for each type of traversal...
//in order, pre order, post order
class PreOrderTraversal extends BinaryTree implements BinaryTreeTraversal {

public void traverse() { traverse(super.getRoot() ); }

private void traverse(Node<T>) {
//the three lines of code this takes
}

}

所以我遇到的问题是我不断收到错误,提示缺少类型 T 或未知类型 T。所以我尝试将其标题更改为

      class PreOrderTraversal extends BinaryTree<T> implements BinaryTreeTraversal { }

     class PreOrderTraversal extends BinaryTree<T extends Comparable<T>> implements BinaryTreeTraversal { }

由于类似的错误,它不起作用。我可以采取什么方法来完成这项工作?我正在尝试将策略模式应用于遍历。我只是希望能够对任何泛型类型进行三种类型的遍历。任何提示将不胜感激。谢谢。

最佳答案

private class PreOrderTraversal< T extends Comparable< T > > extends BinaryTree< T > implements BinaryTreeTraversal { ... }

对于泛型类,参数及其所有约束都位于正在定义的类的名称旁边。不幸的是,通用方法没有选择该语法,其中通用类型参数和约束位于返回类型之前。

关于java - 我如何参数化这个 Java 泛型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22439585/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com