编程语言
首页 > 编程语言> > java – 在什么方面子类型与使用中的子类不同?

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>().

标签:java,subclass,subtype
来源: https://codeday.me/bug/20190930/1835173.html