当前位置: 首页 > 面试题库 >

子类型在哪些方面与子类在用法上有所不同?

孙夕
2023-03-14
问题内容

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

如何区分子类型和子类?


问题答案:

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

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

  1. 当时class A extends BAB因为B b = new A(...);可以的子类型。
  2. 当时interface A extends BAB因为B b = new A() { ... }可以的子类型。
  3. 当时class A extends BA[]B[]因为B[] b = new A[0]可以的子类型。
  4. 当时class A implements BAB因为B b = new A(...)可以的子类型。

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

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

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



 类似资料:
  • 问题内容: 是否有关于哪些内置库和标准库类不可归类(“最终”)的规则? 从Python 3.3开始,以下是一些示例: 我发现了一个问题,涉及用C语言和纯Python实现“最终”类。 我想了解什么原因可以解释为什么首先选择一个班级是“最终的”。 问题答案: 在Python中,类最终是有两个原因的。 1.违反类别不变式 遵循Singleton模式的类具有不变的数量,即实例数量有限(预定)。子类中对此不

  • 无法使用下面的行从子类访问方法, 假设我在子类中有一个方法,而父类中没有相同的方法。在这种情况下,我们无法使用上述代码行访问子类方法print()。但是请注意,如果我们在父类中有相同的方法,那么我们可以使用上面的代码访问它。 可能没有这样的现实生活场景,但试图理解为什么我无法访问子类使用类型为父的子对象,如果我们没有在父类中定义相同的方法。 示例代码如下: 更多解释——如果我在父类中定义了方法,那

  • 问题内容: 我想将tar及其目录中的所有.php和.html文件及其子目录。如果我用 它将所有文件焦油化,这是我不需要的。如果我用 它忽略子目录。如何递归使它成为tar但仅包含两种类型的文件? 问题答案:

  • 我对不同类型的标识符案例以及人们对它们的称呼感兴趣。你知道这个名单上还有其他名字吗? :骆驼大小写(例如在java变量名中) :大写的骆驼大小写(例如在java类名中) :Snake大小写(例如在python变量名中) : Kebab大小写(例如球拍名称) :平面大小写(例如在java包名称) :大写(例如C常量名称)

  • 本文向大家介绍共识算法有哪些类型?相关面试题,主要包含被问及共识算法有哪些类型?时的应答技巧和注意事项,需要的朋友参考一下 回答:** 可用的最受欢迎的共识算法如下: 工作量证明(PoW) 容量证明(PoC) 活动证明(PoA) 委托权益证明(DPoS) 股权证明(PoS) 权威证明 燃烧证明 唯一节点列表 重量证明 证明时间 筛 拜占庭容错

  • 我得到了这个错误:类型'String'不是获取方法flutter中类型'Null'的子类型 这是我使用的get api函数 您可以在此处看到检测数据的功能 我也看到了这个错误 StateError(错误状态:已侦听流。) 而这个错误 这是我做的模型