【问题标题】:How to create Integer object within a class with Generic Integer如何使用 Generic Integer 在类中创建 Integer 对象
【发布时间】:2014-09-12 20:35:42
【问题描述】:

当我尝试以下代码时,出现错误:

意外的类型 必需:类 找到:类型参数 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 对象?

问:在这种情况下是否仍然有可能以及如何在类中创建 Integer 对象?

【问题讨论】:

    标签: java class generics integer


    【解决方案1】:

    您将Integer 声明为泛型类型参数,这隐藏了 Integer 在范围内的事实。您可以采取多种措施之一来解决此问题。

    为泛型类型参数选择不同的名称,例如T.

    class myClass<T>
    

    或者,完全限定对类​​ Integer 的引用。

    java.lang.Integer q = new java.lang.Integer(5);
    

    【讨论】:

    • 仍然显示不兼容类型:java.lang.Integer 无法转换为Integer。
    【解决方案2】:

    我认为您对什么是可参数化类有一个错误的概念。

    要声明一个可参数化的类:

    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
    

    【讨论】:

    • 如果我需要在 myClass 的方法中写这个,例如 addElementToList(T element)。当我写 addElementToList(5) 时,它给了我required: T 的错误,发现:Integer。你是怎么解决的?
    • 你是如何声明你的对象myClass的?
    猜你喜欢
    • 2014-04-22
    • 2012-12-05
    • 2016-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-20
    • 1970-01-01
    • 2021-12-03
    相关资源
    最近更新 更多