我無法理解這段文字來自完全參考 的代碼是這樣的,運行時類型比較在泛型層次結構中的Java
public class Generic
{
public static void main(String[] args)
{
SuperClass<Integer> s1=new SuperClass<>(135);
SubClass<Double> s2=new SubClass<>(1.35);
if(s1 instanceof SuperClass<Integer>)
{
System.out.println("I am instance of SuperClass");
}
}
}
class SuperClass<T>
{
T y;
SuperClass(T ob)
{
y=ob;
}
T ret()
{
return(y);
}
}
class SubClass<T> extends SuperClass<T>
{
T x;
SubClass(T y)
{
super(y);
x=y;
}
}
根據課文,
if(s1 instanceof SuperClass<Integer>)
此行無法編譯,因爲它嘗試將s1與特定類型SuperClass
(在本例中爲SuperClass<Integer>
)進行比較。請記住,運行時沒有可用的通用類型信息。因此,instanceof
無法知道s1
是否爲SuperClass<Integer>
的實例。
有人可以請解釋我究竟是什麼意思?
明確你難道不明白是什麼? –
@ RedRoboHood - 我認爲只有在運行時纔可以使用泛型類型信息,但是這裏說它在運行時不可用。 –
erasure是所有惡意的根源。 – ZhongYu