我试过" T扩展数组"但那不起作用,
public class Foo<T extends Array> {
{ ...}
}
public class Bar {
{
Foo<int[]> f; <-- Error
}
}
从我看到的,我不认为它是可行的,但是,嘿,我不是Java大师
答案 0 :(得分:0)
不,您无法使用SKLabelNode
扩展课程。您只能扩展Java类型,如类,接口等。(您也不能扩展Array
,因为它是基本类型)。如果你想要一种新类型的数组,你必须创建一个该对象的数组,例如int
或int[] intArray = new int[5];
答案 1 :(得分:0)
如果要将类型变量T
限制为引用数组类型,则可以将T
作为组件类型,并限制组件类型,并使用{{1}你需要数组类型,而不是
T[]
你会有
public class Foo<T extends Object[]> {
T obj;
}
Foo<String[]> f;
如果你想允许public class Foo<T extends Object> {
T[] obj;
}
Foo<String> f;
也是基本数组类型,那么在不允许非数组引用类型的情况下也是不可能的,因为像{{1}那样只有基本类型数组的超类型},T
等等int[]
(也许还有boolean[]
和Object
)。没有“just”原语和引用数组的超类型。您可以做的限制最多的是
Cloneable
如果你这样做了,你将无法对Serializable
做任何事情,除了你可以对任何public class Foo<T extends Cloneable & Serializable>
做的事情(注意T
也不{ {1}}接口提供任何方法),因此您可能根本不限制Object
。