【问题标题】:How to eliminate "The expression of type List needs unchecked conversion to conform " warning?如何消除“List 类型的表达式需要未经检查的转换以符合”警告?
【发布时间】:2020-07-14 14:10:33
【问题描述】:

警告是

类型安全:List 类型的表达式需要未经检查的转换才能符合 Collection

我需要在某处进行类型转换吗?

public class ETLStepType {
    public static final ArrayList<String> ETLStepTypes = ( 
            new ArrayList<String> ((Arrays.asList(new String[] {"constant", 
                                                          "append", 
                                                          "insertupdate", 
                                                          "tableinput",
                                                          "filterrows",
                                                          "dblookup",
                                                          "selectvalues"}))));

}

【问题讨论】:

  • Arrays.asList 应该返回一个List&lt;String&gt; 如果T 被正确推断为String。尝试改用 varargs - 没有理由创建新数组
  • 我不认为该代码会产生该警告。至少没有任何最新版本的普通 Java 编译器。
  • 嗯,my IDE 发出的唯一警告是常量名称 ETLStepTypes 不遵循命名约定。您应该遵循这些 Java 命名约定:变量名和方法名用 camelCase 写,类名用 PascalCase 写,常量用 UPPER_SNAKE_CASE 写。 ETLStepTypes 应该是 ~ETL_STEP_TYPES`。
  • 嗯,我不止一次看到 Eclipse 内部编译器的行为在某些极端情况下与其他编译器不同。据我所知,大多数差异都涉及泛型、类型推断和可变参数。

标签: java eclipse compiler-warnings


【解决方案1】:

在 Intellij Idea 中收到“调用 varargs 方法的冗余数组创建”警告,通过删除 'new String []{ 和 }' 解决了这个问题,所以试试

        new ArrayList<String>(Arrays.asList("constant",
                "append",
                "insertupdate",
                "tableinput",
                "filterrows",
                "dblookup",
                "selectvalues"))

解决问题

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-15
    • 2010-09-26
    • 1970-01-01
    • 1970-01-01
    • 2022-11-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多