所以,我有一个类似下面的设置,其中A
和B
都是abstract
类。
abstract class ObjectA extends ObjectB<ObjectC> {
}
public class ObjectD extends ObjectA{
public static void main(String[] args){
ObjectA x = new ObjectD();
ObjectD y = (ObjectD)x; // down cast
}
}
我正在使用一个库,我想在ObjectB
中使用抽象方法,并为所有类提供默认构造函数 - ObjectA
。我不确定我的做法。 BTW ObjectB
是我正在使用的预定义库的一部分。 ObjectA
是我自己的类,提供默认属性和构造函数。
我的方法不太确定,看起来不太好吗?
添加:
ObjectA需要一种扩展ObjectA的类型。
public abstract class ObjectA<T extends ObjectA<T>> {
}
因此,需要我正在做的事情。
答案 0 :(得分:2)
请注意,在某些情况下,您可能会遇到运行时错误,因为通过显式转换,您告诉编译器要相信您并不是制造错误,因此它会忽略错误并在编译时不会检测到错误。
只要你知道自己在做什么,那就没问题了。为安全起见,您始终可以使用instanceof
。