标题: 从泛型类派生子类答疑有奖 [打印本页] 作者: suiabing 时间: 2012-4-30 01:19 标题: 从泛型类派生子类答疑有奖 当我们创建的父类带有泛型的时候,可以为从该接口派生子类,但是为什么父类不能再包含类型形参呢?
class Zi extends Fu<T>
{
}
编译失败!求高手解答。。。分数次要的,答疑才是重要的 作者: 贾联国 时间: 2012-4-30 02:17
如果子类不指定类型,而父类要指定类型T,那么类型T必须是一个实际类型(例如:String等,不能用符号T表示了),同时子类覆盖的方法参数也变成和父类同样的实际类型,也就是说父类必须有明确的实际参数泛型才能这么写作者: 张文建 时间: 2012-4-30 09:34
这是我从CSDN找的例子,不知道能不能帮到你
public class TestApple<T>
{
private T info;
public TestApple(T info){
this.info=info;
}
public void setInfo(T info){
this.info=info;
}
public T getInfo(){
return this.info;
}
public static void main(String[] args)
{
TestApple<String> ta=new TestApple<String>("aaaaaaa");
System.out.println(ta.getInfo());
TestApple<Double> td=new TestApple<Double>(50.3);
System.out.println(td.getInfo());
}
}
public class A5 extends TestApple// public class A5 extends TestApple<String>而这样会出现编译出错,或者在子类中加一个和父类一样的构造器就可以通过
{
public String getInfo(){
return "子类"+super.getInfo().toString();
}
public static void main(String[] args)
{
A5 a=new A5("dfgdf");
System.out.println(a.getInfo());
}
} 作者: 隋营营 时间: 2012-4-30 17:03
class C <String> {……} 若这样定义类C,则String只代表泛型参数,并不是java.lang.String
等价于:class C <T> {……}
因此若这样定义class C <Integer>{……} 编译器警告:The type parameter Integer is hiding the type Integer
2.若这样定义:class C<TypeC> {……}
则可以写:class B <TypeB> extends C <String> {……} 这里的String是java.lang.String
3.扩展:可以这样写:
class C<TypeC> {……}
class B<TypeB, TypeC> extends C<String> {……}
class A extends B<Integer, String> {……}