有代码如下。
为何出如些的结果,应该是不用强制转换的吧。为何?public class Gen<T>
{
private T ob; // 定义泛型成员变量 public Gen(T ob)
{
this.ob = ob;
} public T getOb()
{
return ob;
} public void setOb(T ob)
{
this.ob = ob;
} public void showTyep()
{
System.out.println("T的实际类型是: " + ob.getClass().getName());
}}class TT<T>
{
Gen<T> g; public TT(Gen<T> c)
{
g = c;
} public Gen g()
{
return g;
}
}class Ax
{
String s = "";
}class B extends Ax
{
public B(String s)
{
this.s = s;
} public void display()
{
System.out.println(s);
}
}class GenDemo
{
public static void main(String[] args)
{ Gen<B> g1 = new Gen<B>(new B("sdf"));
System.out.print("所属类" + g1.getOb().getClass().getName() + "    值=");
B b = g1.getOb();// 可以直接得到类型B
b.display(); System.out.println("----------------------------------"); TT<B> t = new TT<B>(g1);
System.out.print("所属类" + t.g().getOb().getClass().getName() + "   值=");
B b1 = (B) t.g().getOb();// 按理说不用强制转换的。为什么。??
b1.display(); }
}