gpt4 book ai didi

java - 有没有办法将泛型参数限制为数组?

转载 作者:太空宇宙 更新时间:2023-11-04 10:37:20 24 4
gpt4 key购买 nike

我尝试了“T extends Array”,但这不起作用,

public class Foo<T extends Array> {
{ ...}
}

public class Bar {
{
Foo<int[]> f; <-- Error
}
}

据我所知,我认为这不可能,但是嘿,我不是 Java 大师

最佳答案

如果要将类型变量 T 限制为引用数组类型,则可以将 T 作为组件类型,并限制组件类型,并在需要数组类型的地方使用 T[],即代替

public class Foo<T extends Object[]> {
T obj;
}

Foo<String[]> f;

你会有

public class Foo<T extends Object> {
T[] obj;
}

Foo<String> f;

如果您也想允许 T 成为基元数组类型,那么如果不允许非数组引用类型,这是不可能的,因为像 int[]boolean[] 等基元数组类型的唯一父类(super class)型是 Object(也许还有 CloneableSerialized)。不存在“只是”原始数组和引用数组的父类(super class)型。您可以做的最严格的限制是这样的

public class Foo<T extends Cloneable & Serializable>

如果您这样做,您将无法对 T 执行任何操作,除非您可以对任何 Object 执行任何操作(请注意,CloneableSerializing 接口(interface)均不提供任何方法),因此您最好根本不限制 T

关于java - 有没有办法将泛型参数限制为数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49330607/

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