【问题标题】:Findbugs SIO_SUPERFLUOUS_INSTANCEOFFindbugs SIO_SUPERFLUOUS_INSTANCEOF
【发布时间】:2011-04-19 10:39:24
【问题描述】:

在我的 findbugs 报告中,我在以下代码部分中有一个 SIO_SUPERFLUOUS_INSTANCEOF 正确性错误

/** Allow Comparison based on User-Labels */
public int compareTo(AbstractListItem o) {
    if ( !( o instanceof AbstractListItem ) ) {
        // Correctness - Unnecessary type check done using instanceof operator
        // : Method com.x.y.gui.topology.TopologyListNode.compareTo (AbstractListItem) 
        // does an unnecessary type check using instanceof operator when it 
        // can be determined statically
    return -1;
}

静态确定类型的正确方法是什么?

【问题讨论】:

    标签: java findbugs


    【解决方案1】:

    public int compareTo(AbstractListItem o) - o AbstractListItem,你不需要检查。

    如果您有public int compareTo(Object o) 那么您的instanceof 将是必需的,并且不会产生警告。

    【讨论】:

      【解决方案2】:

      在您的代码中,对象 o 的类型已经静态确定为 AbstractListItem,因此不需要 instanceof。 Findbugs 将其报告为警告,因为它可能是错误的迹象,例如,您要检查的是 AbstractListItem 的子类型,但您错误地键入了 AbstractListItem。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-06-30
        • 2019-09-14
        • 2010-10-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多