Eclipse中的空注释处理器

大卫·十霍夫

我正在使用Eclipse JDT Null注释处理器,并且在使用java.lang.Class时出现一些奇怪的行为。

package test;

import org.eclipse.jdt.annotation.Nullable;

public class AnnotationSpul {

    @Nullable
    public <V> V get1(Class<V> type) {
        return get2(type); //This line has a warning
    }

    @Nullable
    public <V> V get2(Class<V> type) {
        return null;
    }
}

这是我的包裹信息:

@NonNullByDefault({ PARAMETER, RETURN_TYPE, FIELD })
package test;

import static org.eclipse.jdt.annotation.DefaultLocation.FIELD;
import static org.eclipse.jdt.annotation.DefaultLocation.PARAMETER;
import static org.eclipse.jdt.annotation.DefaultLocation.RETURN_TYPE;

import org.eclipse.jdt.annotation.NonNullByDefault;

我得到的警告是:“类型'@NonNull Class'的表达式需要未经检查的转换才能符合'@NonNull Class <@Nullable V>'”

我不明白为什么收到警告。方法签名完全相同,那么为什么传递的值需要转换?为什么要以一种方法和一种方法type推断@NonNull Class<V>@NonNull Class<@Nullable V>

斯蒂芬·赫尔曼(Stephan Herrmann)

这是ecj 4.4中错误在类型推断和空推断的组合中,ecj急切地将类型参数推断为@Nullable V

该错误已在4.5M5修复,因此即将发布的4.5(火星)版本将按预期接受该程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章