【问题标题】:Testing linear class relationship测试线性类关系
【发布时间】:2008-12-02 16:48:57
【问题描述】:

我称之为线性类关系,但如果我错了,请纠正我。我正在测试对象A 的类是否是对象B 的类的祖先或后代。

例如,AbstractCollectionObjectArrayList 线性相关。然而,ArrayListVector线性相关。

我的第一次尝试是:

// ...Assume objects A and B were declared...

Class<? extends Object> Aclass = A.getClass();
if (Aclass.isAssignableFrom(B.getClass()) || Aclass.isInstance(B)) {
    // Their types are linearly related, at the least
}

这是一个合适的检查吗?

【问题讨论】:

  • 我想我误解了这个问题,但是 (a instanceof b || b instanceof a) 有什么问题?我不确定上课是否必要或有帮助,但我可能完全缺少某些方面。
  • 像往常一样,我把它弄得太复杂了。但是,像您所说的那样简单地进行两个 instacedof 测试是行不通的,因为它期待“(object)istanceof(type)”。 Aaron 的解决方案效果很好。

标签: java class


【解决方案1】:

您的测试有效。我更喜欢对称检查:

if (a.getClass().isInstance(b) || b.getClass().isInstance(a)) { 
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-12-31
    • 2017-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多