未经检查的强制转换和不必要的带有lambda的禁止警告

西蒙·福斯伯格:

在使用Lambda和泛型时,我遇到了不安全强制转换警告的特殊情况。

在复制和制作SSCCE期间,我发现这可能与以下事实有关:lambda实际上位于return语句内部。

问题是:为什么我会在该warningUnnecessarySuppressWarnings方法中收到警告卸下 @SuppressWarnings("unchecked"),我得到:

类型安全:从列表到列表的未经检查的转换

warningUnsafeCast方法所示因此,不必像新警告那样注释。

我正在为Java EE开发人员使用Eclipse Kepler SP2,内部版本ID:20140224-0627

还在Eclipse Kepler中使用推荐Java 8支持更新站点

public static void main(String[] args) {
    System.out.println(warningUnnecessarySuppressWarnings());
    System.out.println(warningUnsafeCast());
    System.out.println(withoutWarning());
}

private static Integer perform(Function<List<?>, Integer> func) {
    return func.apply(Arrays.asList("a", "b", "c"));
}

private static Integer warningUnnecessarySuppressWarnings() {
    return perform(list -> {
        @SuppressWarnings("unchecked") // Unnecessary @SuppressWarnings("unchecked")
        List<String> unsafeCast = (List<String>) list;
        return unsafeCast.size();
    });
}

private static Integer warningUnsafeCast() {
    return perform(list -> {
        List<String> unsafeCast = (List<String>) list; // Type safety: Unchecked cast from List<capture#4-of ?> to List<String>
        return unsafeCast.size();
    });
}

@SuppressWarnings("unchecked")
private static Integer withoutWarning() {
    return perform(list -> {
        List<String> unsafeCast = (List<String>) list;
        return unsafeCast.size();
    });
}
斯图尔特·马克斯(Stuart Marks):

有问题的代码是类型不安全的,因此应生成警告。@SuppressWarnings注解当然需要抑制此警告。

Eclipse Kepler SP2中的一个错误显然是它发出了对该语句的警告,但是随后@SuppressWarnings在添加注释时发出了警告,警告该错误

解决方法是@SuppressWarning在Eclipse编译器配置中禁用“不必要的”警告。

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

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

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

带有参数化类型的未经检查的强制转换警告

禁止不必要的转换

未经检查的强制转换警告和 ClassCastException

如何抑制未经检查的强制转换警告?

了解gometalinter取消转换不必要的转换警告

Cloneable#clone方法不必要的强制转换

为什么EF生成带有不必要的空检查的SQL查询?

禁止对未经检查的转换发出警告

带有多对多字段和中间表的模型的Django查询集中的不必要连接

带有CSS显示和表格单元格的不必要间距

Java / Android-具有Type的Gson()。fromJson()仍给出未经检查的强制转换警告

为什么在将Throwable抛出异常时没有给出未经检查的强制转换警告?

不必要的类型转换?

右侧带有不必要空间的SQL数据

未经检查仅在通用类型上的强制转换警告

对返回声明中未经检查的强制转换的警告

Java未经检查的强制转换为类型参数警告,尽管是

不必要的转换是否有任何负面影响?

具有多个有界类型和未经检查的强制转换的Class.asSubclass

SQLAlchemy查询引发有关sqlite和Decimal的不必要警告,如何具体禁用?

如何在没有未经检查的强制转换警告的情况下从通配符转换为通用返回类型

不必要的转义字符警告

Cython发出“不必要的”警告

Laravel updateTimestamps方法不必要的检查?

IDE报告不必要的装箱检查

Java:反射,泛型和未经检查的强制转换

NullPointerException和不必要的屏幕加载

生成的javadoc页面不必要地包装了带有注释的方法参数

OAuth2-带有刷新令牌的不必要的复杂性