public <T extends Shape> T add() T是泛型,是指继承了Shape的任何类型都可以。 public Shape add() 是返回Shape这种类型。 当然,你在实际操作的过程中也可以返回它的子类。获取到后要再强制类型转化才可以。而上面的方式不用强制类型转化。
really?public <T extends Shape> T add()只是说返回的是Shape的子类型,但是没有指明是哪一个子类型,因此不可以返回任何的类型,除了null。这样会报错: public <T extends Shape> T add(){ return new Shape(); } 必须还得明确的指出来是返回那一种类型才可以: public <T extends Shape> T add(){ return (T)new Shape();//这里的强转不可少 }
T是泛型,是指继承了Shape的任何类型都可以。
public Shape add()
是返回Shape这种类型。
当然,你在实际操作的过程中也可以返回它的子类。获取到后要再强制类型转化才可以。而上面的方式不用强制类型转化。
really?public <T extends Shape> T add()只是说返回的是Shape的子类型,但是没有指明是哪一个子类型,因此不可以返回任何的类型,除了null。这样会报错:
public <T extends Shape> T add(){
return new Shape();
}
必须还得明确的指出来是返回那一种类型才可以:
public <T extends Shape> T add(){
return (T)new Shape();//这里的强转不可少
}
楼主的这个泛型方法是相当于向下转型了吧,不进行运行时类型判断就转型是不是会崩溃啊??