java – 在什么方面子类型与使用中的子类不同?

当通过扩展或实现链接类时,建立子类型.亚型也用于泛型.

如何区分子类型和子类?

解决方法:

Java中,子类化是一种子类型.

Java允许子类型化的方式有很多种:

>当A类延伸B时,A是B的子类型,因为B b = new A(…);没关系.
>当接口A扩展B时,A是B的子类型,因为B b = new A(){…}是可以的.
>当A类扩展B时,A []是B []的子类型,因为B [] b = new A [0]是正常的.
>当A类实现B时,A是B的子类型,因为B b = new A(…)是可以的.

听起来你想要一种方法来区分其他人.以下应该这样做.

static boolean isSubclass(Class<?> a, Class<?> b) {
  return !b.isArray() && !b.isInterface() && b.isAssignableFrom(a);
}

但是由于类型擦除,它不会处理泛型类的子类型.类实例在运行时不携带类型参数,因此无法区分新ArrayList< String>()的运行时类型与新的ArrayList< Integer>().

上一篇:JavsScript继承


下一篇:JavaScript继承-原型链继承