当前位置: 首页 > 面试题库 >

ArrayList的不安全或未经检查的操作

王俊楚
2023-03-14
问题内容

我被分配去做一个程序,该程序获取0-25之间的100个随机整数并将它们存储在数组中。然后,我必须调用2种方法来将偶数和几率分开(非常典型)。所以我尝试了ArrayList东西(我认为是学到的),在我遇到这个问题之前,它似乎还不错(我正在关注教程和在线内容):
Unit8.java使用未经检查或不安全的操作

我的代码是这样的:

    import java.util.*;
    import java.awt.*;

    public class Unit8
    {
public static void main (String [] args)
{
    //create an array for original 100 integers
    //create a 2D array for evens and odds
    //split them up using 2 methods

    int[] originalArray = new int[100];
    ArrayList even = new ArrayList(1);
    ArrayList odd = new ArrayList(1);

    for (int x = 0; x < originalArray.length; x++)
    {
        originalArray[x] = (int)(Math.random() * 25);
    }

    evensDivider(originalArray, even);
    oddsDivider(originalArray, odd);
}

public static void evensDivider (int[] e, ArrayList even)
{


    for (int y = 0; y < e.length; y++)
    {
        if (e[y]%2 == 0)
            even.add(e[y]);
    }

    System.out.println("The evens are: " + even);
}

public static void oddsDivider (int[] o, ArrayList odd)
{


    for (int z = 0; z < o.length; z++)
    {
        if (o[z]%2 == 1)
            odd.add(o[z]);
    }
}

}

与存在的具体的错误: even.add(e[y]);odd.add(o[z]);

请帮我解决这个问题,我已尽力使其清晰易懂。


问题答案:

这是因为你使用ArrayListraw type。并且您要向其中添加特定类型。

原始类型ArrayList将期望使用Object类型的元素。如果添加任何其他类型,则Compiler不会确切知道要存储的类型。因此,它
unchecked or unsafe operations 可以警告您可能做错了什么。

您最好创建一个GenericArrayList:-

List<Integer> evenNumbers = new ArrayList<Integer>();

另外,请更改您的method签名:-

public static void evensDivider (int[] e, List<Integer> evenNumbers)

附言 :-您应该始终参考interface type一下。我的意思List是代替ArrayList



 类似资料:
  • 其中T是类型变量: java:93:警告:[rawtypes]发现原始类型:可比较的私有类Customer extends JPanel实现可比较{^ 泛型类可比性缺少类型参数,其中T是类型变量: 6个警告

  • 问题内容: 我正在完成学校的实验任务,并且在编译时出现此错误。该程序运行良好,有点想修复导致错误的原因。程序代码和完整的错误如下。一如既往的感谢! 错误:注意:F:\ Java \ Lab 8 \ Lab8.java使用未经检查或不安全的操作。注意:使用-Xlint:unchecked重新编译以获取详细信息。 码: 问题答案: 这意味着Java编译器已经注意到您的代码存在一些潜在的不安全问题,并警

  • 问题内容: 在我的spring应用程序上下文文件中,我有类似以下内容: 在java类中,实现如下所示: 在Eclipse中,我看到一条警告: 类型安全性:未经检查的从Object到HashMap的转换 我做错什么了?我该如何解决该问题? 问题答案: 好吧,首先,你正在通过新的HashMap创建调用浪费内存。你的第二行完全忽略了对此创建的哈希图的引用,从而使该哈希图可用于垃圾收集器。因此,不要这样做

  • 问题内容: 例如: 问题答案: 如果你使用的是不带类型说明符的集合(例如,而不是),则在Java 5及更高版本中会出现这种情况。这意味着编译器无法使用泛型以类型安全的方式检查你是否正在使用集合。 要消除警告,只需具体说明你要在集合中存储的对象类型。所以,代替 采用 在Java 7中,你可以使用Type Inference缩短通用实例化。

  • 通过系统内置规则,将匹配规则的安全性较低的资源扫描出来并按照建议进行处理,从而提高系统安全性的目的。 建议列表 建议列表显示所有匹配优化建议规则的资源列表,用户可根据建议对资源进行处理。 忽略列表 忽略列表显示不需要处理的资源或一类规则建议。 规则配置 规则配置即根据系统内影响资源安全的条件设置相应的规则,如安全组的规则设置等,当资源匹配规则则表示资源的安全性较低,需要用户进行处理等。

  • 为了介绍本章内容,我们借用官方文档的一句话, “在基本代码中尽可能减少不安全的代码”(”one should try to minimize the amount of unsafe code in a code base.”)。记住这句话,接着我们进入学习!在 Rust 中,不安全代码块是用于避开编译器的保护策略;具体地说,不安全代码块主要有 4 方面内容: 解引用裸指针 通过 FFI 调用函数