gpt4 book ai didi

Java - 在内部类的子类中绑定(bind)泛型类参数

转载 作者:行者123 更新时间:2023-11-30 09:07:10 25 4
gpt4 key购买 nike

这按预期工作 - (非静态)内部类 Node 使用树的参数 (K, V) 进行参数化:

public class Tree<K,V> {

private abstract class Node extends Page<K,V> {}

private final class InnerNode extends Node {}

private final class LeafNode extends Node {}
}

现在我想以某种方式向编译器传达内部节点应该只接受整数作为参数。尝试过:

private abstract class Node<V> extends Page<K, V> {}

但它显示警告:

The type parameter V is hiding the type V

我要实现:

public class Tree<K, V> {

/** The type parameter V is hiding the type V */
private abstract class Node<V> extends Page<K, V> {}

private final class InnerNode extends Node<Integer> {}

private final class LeafNode<V> extends Node<V> {}
}

但 V 是树的类型参数。下面不会编译:

public class Tree<K, V> {

private abstract class Node<T extends V> extends Page<K, V> {}

/**
* Bound mismatch: The type Integer is not a valid substitute for the
* bounded parameter <T extends V> of the type Tree<K,V>.Node<T>
*/
private final class InnerNode extends Node<Integer> {}

private final class LeafNode<T extends V> extends Node<T> {}
}

我想做的事有可能吗?还是对泛型的严重误解?

最佳答案

public class Tree<K, V> {

private abstract class Node<T> extends Page<K, T> {}

private final class InnerNode extends Node<Integer> {}

private final class LeafNode extends Node<V> {}
}

这一切真的是那么简单和宏伟——美丽和所有这些:D

关于Java - 在内部类的子类中绑定(bind)泛型类参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24089743/

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