参数化类型对象如何存储在内存中以及如何保留类型信息?

时间:2018-02-18 06:35:54

标签: java generics

class Gen3<T extends Number>
{
    T val;
    Gen3(T ob)
    {

    val=ob;    
    }
    T getOb()
    {
        return val;
    }
} 

案例1:

Gen<Integer> a=new Gen<Integer>(2);
String b=a.getOb();//compile error

正如我们在运行时所知,表达式如下:

Gen a=new Gen(2);

那么getOb()方法如何记住它必须返回Integer。该信息是否存储在类对象中?

2 个答案:

答案 0 :(得分:0)

在运行时,a并不知道它必须返回Integer。它返回Integer,因为val中存储的对象是Integer,该对象是getOb返回的对象。

答案 1 :(得分:0)

  

参数化类型对象如何存储在内存中

与任何其他物体相同。

  

以及如何保留类型信息?

它没有保留在课堂上。您的类被编译为TNumber,但生成使用任何特定实例的目标代码以使用该实例的T。< / p>