java - 带泛型参数的函数 java

标签 java generics

我有一个对象树 T,声明为

 public class Tree<T> {

    private Node<T> root;

    public Tree(T rootData) {
        root = new Node<T>();
        root.data = rootData;
        root.children = new ArrayList<Node<T>>();
    }

    public static class Node<T> {
        private T data;
        private Node<T> parent;
        private List<Node<T>> children;
    }
}

并且想要添加一个函数keepBranch,它将树减少到其分支之一。

但我需要 keepBranch将对象 T 作为参数,以选择分支。
类似的东西

public void keepBranch(<T> param) {

        for (Node<T> node : this.root.children) {
            if (param.equals(node.data)) {
                this.root = node;
            }
        }
}

有办法做到这一点吗?还是我做错了?

最佳答案

将参数类型更改为T。但你的比较是错误的,你将一个值与一个节点进行比较。更改是为了将节点的值与 param 进行比较:

public void keepBranch(T param) {
    for (Node<T> node : this.root.children) {
        if (param.equals(node.data)) {
            this.root = node;
        }
    }
}

关于java - 带泛型参数的函数 java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42138969/

相关文章:

java - 客户端监听服务器消息

generics - XML 注释——如何正确标记 See also 标签?

java - JSF 1.2 和 2.0 之间的主要区别

java - 获取有关 CPU 的人类可读信息

java - 接受具有接口(interface)的任何类型的通配符

arrays - 具有通用2D数组的通用函数

c# - 如何在 C# 中将 className 传递给将泛型类型作为参数的方法

java - 我需要获取一个通用惰性加载器列表,它将实例化其推断类型的实例

java - CDI 2.0 : Observing multiple events in one and the same observer instance

java - 如何知道我是否在 Android 上通话?