java - Java中 "Unchecked cast"警告的解释

标签 java exception casting

我只是一个初学者,我需要一个好心人来帮助我;)我得到了这个方法并上线了:

( (HashSet<String>) pos[targetPos]).add(word);

它给了我一个异常(exception)

    (Unchecked cast from Object to HashSet<String>)

我尝试将 Object[pos] 更改为 String[pos] 以更具体,但它在这一行给出了一个错误:pos[targetPos] = new HashSet<String>();

Type mismatch: cannot convert from HashSet<String> to String

方法是这样的:

public void add(String word, Object[] root){

    Object[] pos = root;
    int wordIndex = 0;
    int targetPos;

    if(word.length()>=3){
        for(int i = 1; i <=3; i++){
            targetPos = word.charAt(wordIndex) -'a'; //convert a letter into index eg a==0
            if(i==3){
                if(pos[targetPos]==null){
                    pos[targetPos] = new HashSet<String>();
                }
                ( (HashSet<String>) pos[targetPos]).add(word);
                //System.out.println(Arrays.toString(pos));
                break;

            }//end if outer if
            else{
                if(pos[targetPos]==null){
                    pos[targetPos] = new Object[28];
                }
                wordIndex++;
                pos =  (Object[]) pos[targetPos];
            }
        }//end of for
    }

}

根是

 Object[] root = new Object[28];

最佳答案

pos[]定义为Object大批。当您将其转换到HashSet<String>时后来,Java 就不知道你可以这么做了。这就是未经检查的强制转换——编译器警告您可能正在做一些不安全的事情。

您可以通过更改 pos 的类型来消除警告。至HashSet<String>[] .

关于java - Java中 "Unchecked cast"警告的解释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15953666/

相关文章:

java - Try-Catch 中的静态方法未完全执行

c - (无符号强制转换)值和写入值之间的区别?

java - Spring @RestController 响应已提交

c++ - findcontours 断言失败

java - x 秒后更新标记

java - 自定义异常类未编译到 .class 文件中

c# - 当输入和输出应该是整数时,如何保存中间小数结果?

c++ - 如何在C++中绑定(bind)变量

java - 如何使用 Java 中的套接字处理来自 Teltonika GPS 设备的数据

java - 使用 indexof 计算单词