[英]Java generic casting
我有一个通用类A<T>
和一个子类B扩展了A<String>
。 类A有一个返回此值的方法(所以是A<T>
)。 问题是,如果我在B对象上调用该方法,它将返回A<String>
并且必须转换为B,但是B与A<String>
相同,不是吗? 所以我不必抛...
如果您的方法返回A<String>
则它可以是类型B
的对象, 但不必一定是!
如果您有超一流的类型car
而BMW extends car
。
考虑一家制造汽车的工厂。 该方法可以返回汽车 - 可以是BMW,但不必是BMW 。
我重写了该方法并强制转换了返回的值,这样我就不必在任何地方都要做。 谢谢@AndyTurner
您甚至不必投。 您可以重写该方法并将返回类型更改为B,因为它仍然是A<String>
,它是A<T>
,因此它对B有效。
class A<T> {
public A<T> return_this() {
return this;
}
}
class B extends A<String> {
@Override
public B return_this() {
return this;
}
}
因此,您可以执行以下操作:
B b = new B();
A<String> a = b.return_this(); //Because B extends A<String>
B b = b.return_this();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.