当我尝试以下代码时,出现错误:
意外类型 要求:上课 found:type parameter Integer其中Integer是一个类型变量
class myClass <Integer>
{
public void myMethod()
{
Integer q = new Integer(5); //Not allowed
}
}
但是,允许使用以下代码
class myClass
{
public void myMethod()
{
Integer q = new Integer(5); //Allowed
}
}
当我用泛型Integer
声明类时,有人可以解释为什么我不允许在类中创建Integer对象吗?
Que:在这种情况下,是否仍然可以以及如何在类中创建Integer对象?
答案 0 :(得分:2)
您声明Integer
是泛型类型参数,它隐藏了类 Integer
在范围内的事实。你可以做几件事之一来解决这个问题。
为通用类型参数选择其他名称,例如T
。
class myClass<T>
或者,完全限定对类Integer
的引用。
java.lang.Integer q = new java.lang.Integer(5);
答案 1 :(得分:1)
我认为你对可参数化的类有一个错误的想法。
声明可参数化的类:
class myClass <T>
{
T myGenericVariable;
Integer i;
public void myMethod()
{
this.i = new Integer(5);
}
}
如何使用它:
myClass mc = new myClass<String>();//String or whatever you want