Java 未经检查的转换

发布于 2024-10-22 06:26:43 字数 219 浏览 1 评论 0原文

我有以下代码行

this.htmlSpecialChars = this.getSpecialCharMap();

private HashMap<String,String> htmlSpecialChars;

但收到​​有关未经检查的转换的警告。我该如何停止这个警告?

I have the following line of code

this.htmlSpecialChars = this.getSpecialCharMap();

where

private HashMap<String,String> htmlSpecialChars;

but I get a warning about an unchecked conversion. How do I stop this warning?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

错々过的事 2024-10-29 06:26:43

你得到这个是因为 getSpecialCharMap() 返回一个对象,其类型无法被编译器验证为 HashMap<字符串,字符串>。继续提供 getSpecialCharMap 的原型。

You're getting this because getSpecialCharMap() is returning an object whose type cannot be verified by the compiler to be HashMap< String, String>. Go ahead and provide the prototype for getSpecialCharMap.

晨曦÷微暖 2024-10-29 06:26:43

您收到警告是因为编译器无法验证对 htmlSpecialChars 的赋值是否为 HashMap,因为方法 getSpecialChars() 返回的是普通的非泛型 HashMap。

您应该修改您的方法以返回特定的泛型类型:

private HashMap<String,String> getSpecialCharMap() {
    return new HashMap<String,String>();
    }

You are getting the warning because the compiler cannot verify that the assignment to htmlSpecialChars is a HashMap<String,String>, since the method getSpecialChars() is returning a plain, non-generic HashMap.

You should modify your method to return the specific generic type:

private HashMap<String,String> getSpecialCharMap() {
    return new HashMap<String,String>();
    }
素食主义者 2024-10-29 06:26:43

最好的方法是将方法的返回类型修改为 numberMap 的类型或这种方式 - 请注意,这是非常糟糕的做法。不要告诉任何人我向您展示了这个:

带有未经检查的转换警告的示例:

private static HashMap getSpecialCharMap() {
    return new HashMap();
}

public static void main(String[] args) {        
    HashMap<String,String> numberMap = getSpecialCharMap(); //warning
}

没有警告的示例:

...
@SuppressWarnings("unchecked")
public static void main(String[] args) {
    @SuppressWarnings("unused")
    HashMap<String,String> numberMap = getSpecialCharMap();
}

The best way will be to modify return-type of your method to numberMap's type or this way - please notice this is really bad practice. Don't tell anybody that I showed you this:

Example with unchecked conversion warning:

private static HashMap getSpecialCharMap() {
    return new HashMap();
}

public static void main(String[] args) {        
    HashMap<String,String> numberMap = getSpecialCharMap(); //warning
}

Example without warning:

...
@SuppressWarnings("unchecked")
public static void main(String[] args) {
    @SuppressWarnings("unused")
    HashMap<String,String> numberMap = getSpecialCharMap();
}
过期以后 2024-10-29 06:26:43

getSpecialCharMap()的返回类型是非泛型HashMap吗?未经检查的转换警告通常是由于泛型中的类型擦除而发生的。为了解决这个问题,您需要使用 @SuppressWarnings("unchecked") 对该方法进行注释,或者将 getSpecialCharMap() 的返回类型更改为 HashMap<字符串,字符串>

Is the return type of getSpecialCharMap() non-generic HashMap? Unchecked conversion warning typically happens because of Type Erasure in Generics. In order to get around this, you need to annonate the method with @SuppressWarnings("unchecked") or change the return type of getSpecialCharMap() to HashMap<String, String>.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文