如何删除java警告

如何删除java警告,java,Java,我发现了这一点,它似乎起了作用,我正在尝试通过HashMap迭代: 但这部分代码显示警告,我不知道如何使其不显示警告: Iterator it = map.entrySet().iterator(); Map.Entry pairs = (Map.Entry) it.next(); 有没有一种方法可以在不使用suppressWarnings注释的情况下“修复”此问题?是的,使用正确的it和对的通用定义-假设映射定义正确 例如: Map<String, Integer> map =

我发现了这一点,它似乎起了作用,我正在尝试通过HashMap迭代:

但这部分代码显示警告,我不知道如何使其不显示警告:

Iterator it = map.entrySet().iterator();
Map.Entry pairs = (Map.Entry) it.next();

有没有一种方法可以在不使用suppressWarnings注释的情况下“修复”此问题?

是的,使用正确的
it
对的通用定义-假设
映射
定义正确

例如:

Map<String, Integer> map = ...;
Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
Map.Entry<String, Integer> pairs = it.next();  // no need for cast
Map=。。。;
迭代器it=map.entrySet().Iterator();
Map.Entry pairs=it.next();//不需要浇铸

是的,使用正确的
it
对的通用定义-假设
map
定义正确

例如:

Map<String, Integer> map = ...;
Iterator<Map.Entry<String, Integer>> it = map.entrySet().iterator();
Map.Entry<String, Integer> pairs = it.next();  // no need for cast
Map=。。。;
迭代器it=map.entrySet().Iterator();
Map.Entry pairs=it.next();//不需要浇铸

我假设您收到警告,您会想要这样的东西,我想:

Iterator<Map.Entry> it = map.entrySet().iterator();
Map.Entry pairs = it.next();
Iterator it=map.entrySet().Iterator();
Map.Entry pairs=it.next();

之所以给出警告,是因为您没有指定
迭代器
正在迭代的类型,因此当您将其强制转换为
Map.Entry
时,可能是不安全的强制转换。指定类型意味着编译器可以确保事情是预期的类型(在这种情况下,您甚至不需要执行强制转换)。

我假设您收到警告,您会想要这样的东西,我认为:

Iterator<Map.Entry> it = map.entrySet().iterator();
Map.Entry pairs = it.next();
Iterator it=map.entrySet().Iterator();
Map.Entry pairs=it.next();

之所以给出警告,是因为您没有指定
迭代器
正在迭代的类型,因此当您将其强制转换为
Map.Entry
时,可能是不安全的强制转换。指定类型意味着编译器可以确保事情是预期的类型(在这种情况下,您甚至不需要执行强制转换)。

为什么不使用for循环,正如72次向上投票的答案所建议的那样。

为什么不使用for循环,正如72次投票的答案所示。

另一个简单的解决方案是创建两个大小相同的字符串数组。。。一个保留键,另一个保留值。。。将它们保持在正确的顺序,您可以使用for循环来获取任何索引的键和值


当然,这并不像从映射中获取密钥并使用迭代器那样花哨。。。另一个简单的解决方案是创建两个大小相同的字符串数组。。。一个保留键,另一个保留值。。。将它们保持在正确的顺序,您可以使用for循环来获取任何索引的键和值


当然,这并不像从映射中获取密钥并使用迭代器那样花哨。。。但它是有效的。

首先,你最好声明你的地图:

Map<String, Object> map = ...
Map=。。。

如果以这种方式声明,则可以使用map.entrySet(),它返回您设置的map.Entry元素(没有任何警告)

首先,您最好声明您的映射:

Map<String, Object> map = ...
Map=。。。

如果您以这种方式声明,那么您将能够使用map.entrySet(),它返回您设置的map.Entry元素(没有任何警告)

,当您尝试使用
pairs
@dty时,它只会给您一个警告/强制转换,而这是正确的,如果没有发布代码,我就无法真正修复它并发布它应该是什么。我希望上面的内容能说明这个概念,然后海报就能知道其余的代码应该如何工作。当你尝试使用
pairs
@dty时,这只会给你一个警告/警告。这是真的,如果没有发布代码,我就无法真正修复它并发布它应该是什么。我希望上面的内容能说明这个概念,然后海报就能说明代码的其余部分应该如何工作。你试过这个吗:为什么不想使用@SuppressWarnings注释?“这就是它的作用!”你开玩笑吗
@SuppressWarnings
是最后的手段,当然不能用于您可以轻松修复的东西。我使用它来解决eclipse中FindBugs无法解决的问题……:-)叫我懒虫你试过了吗:为什么不想使用@SuppressWarnings注释?“这就是它的作用!”你开玩笑吗
@SuppressWarnings
是最后的手段,当然不能用于您可以轻松修复的东西。我使用它来解决eclipse中FindBugs无法解决的问题……:-)叫我懒