h5动画网站,社交网络的推广方法有哪些,南京网站制作千,购物网站开发用什么软件Java泛型中有存在一种方式叫做类型擦除#xff0c;也就是说泛型在编译期间进行类型检验上做到有效安全#xff0c;但是在运行当中#xff0c;会将该泛型类型用顶层父类#xff08;若无继承关系则用Object#xff09;代替#xff0c;然后再进行强转换成目标类型#xff0… Java泛型中有存在一种方式叫做类型擦除也就是说泛型在编译期间进行类型检验上做到有效安全但是在运行当中会将该泛型类型用顶层父类若无继承关系则用Object代替然后再进行强转换成目标类型这种类型擦除也存在在泛型方法中但是方法的擦除带来了两个复杂的问题。 public class ParentStringString {String src;public void setSrc(String src){this.srcsrc;}
} public class ChildString extends ParentStringString {String schildString;public void setSrc(String src){srcs;}
} 在类型擦除之后代码演变成如下的样子 public class ChildString extends ParentString {String schildString;public void setSrc(String src){srcs;}
} 但是由于类型擦除父类中的方法变成 setSrc(Object src) 这个时候子类无法覆盖父类的方法。 由于参数的类型不同这是两个不同的方法但是这种情况不应该出现的。考虑一下下面的语句序列 ChildString childStringnew ChildString();ParentStringString parentStringchildString;parentString.setSrc(aaa); 这里在一般的情况下是通过多态的关系parentString引用了子类ChildString的方法问题在于类型擦除与多态发生了冲突。要解决这个问题就需要在ChildString中生成一个桥方法bridge method编译器自动生成 public void setSrc(String src){setSrc((String)src);} 值得注意的还有一点桥方法不仅用于泛型类型目的是用来被合成保持多态。在一个方法覆盖另一个方法时可以指定一个更严格的返回类型。 还有另外一个知识点作为补充 转载请说明原文出处http://www.cnblogs.com/xxzhuang/p/5968331.html 多谢合作。 转载于:https://www.cnblogs.com/xxzhuang/p/5968331.html