gpt4 book ai didi

JAVA:泛型编译时间常量

转载 作者:行者123 更新时间:2023-11-29 08:48:46 24 4
gpt4 key购买 nike

我有一个抽象泛型类,它需要一个数字常量来初始化一个数组。当我使用那个泛型类时,我在编译时知道数组的大小。有什么办法可以实现吗?

abstract class Node<T, MagicN> {

private T parent = null;
private T[] child = (T[]) new Object[MagicN];

//some methods that rely on the initialized array.

}
final class ConcreteNode extends Node<ConcreteNodeType, 2> {

}

在此示例中,类 ConcreteNode 有 2 个子节点。

最佳答案

您不能使用通用作为模板。由于 Java 的代码优化是在运行时完成的,因此没有理由在编译时进行内联。

abstract class Node<T extends Node> {

private final T parent;
private final T[] child;

Node(T parent, int size) {
this.parent = parent;
child = (T[]) new Object[size];
}

//some methods that rely on the initialized array.

}
final class ConcreteNode extends Node<ConcreteNode> {
ConcreteNode(ConcreteNode parent) {
super(parent, 2);
}
}

关于JAVA:泛型编译时间常量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23788278/

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