我想知道这个创作是否可行:
Class<String> stringClass = String.class;
MyGenericClass<stringClass> myGenericClass;
我在IDE中尝试过,但是出现了编译错误。
答案 0 :(得分:7)
Java语言规范说明了type arguments
类型参数可以是引用类型或通配符。通配符 在只有部分知识类型的情况下很有用 参数是必需的。
此示例中的对象stringClass
不是引用类型,也不是通配符。
类型参数,在<>
之间放置在参数化类型变量声明,构造函数或方法调用表达式等中的部分,仅可以是引用类型或通配符。例如,
MyGenericClass<String> variable;
// or
MyGenericClass<?> variable;
请注意,基本类型也不能用作类型参数。
答案 1 :(得分:1)
不可能,类型声明必须是编译时常量,不能是变量。