gpt4 book ai didi

java - 子类型在用法上与子类有何不同?

转载 作者:太空狗 更新时间:2023-10-29 23:02:19 24 4
gpt4 key购买 nike

当一个类通过扩展或实现的方式链接时,就建立了一个子类型。子类型也用于泛型。

如何区分子类型和子类?

最佳答案

在 Java 中,子类化是一种子类型。

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

  1. 何时class A extends B , AB 的子类型因为B b = new A(...);没关系。
  2. 何时interface A extends B , AB 的子类型因为B b = new A() { ... }没关系。
  3. 何时class A extends B , A[]B[] 的子类型因为B[] b = new A[0]没关系。
  4. 何时class A implements B , AB 的子类型因为B b = new A(...)没关系。

听起来您想要一种区分彼此的方法。下面应该这样做。

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

但由于类型删除,它不会处理泛型类的子类型化。 Class实例在运行时不携带类型参数,因此无法区分 new ArrayList<String>() 的运行时类型来自new ArrayList<Integer>() .

关于java - 子类型在用法上与子类有何不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7072290/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com