微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javac抱怨未经检查的演员

如何解决javac抱怨未经检查的演员

我是从事Java练习的JavaScript开发人员,可以寻求帮助。

当我尝试使用javac进行编译时,我得到: "uses unchecked or unsafe operations."

我需要为此担心吗?

我这样做正确吗?

MacBook-Pro-3:Documents garrettsmith$ javac codepoop/*.java -Xlint:unchecked
codepoop/GArrayList.java:30: warning: [unchecked] unchecked cast
    return (T) elements[i];
                       ^
  required: T
  found:    Object
  where T is a type-variable:
    T extends Object declared in class GArrayList
1 warning

GArrayList:

import java.util.Arrays;

public class GArrayList<T> {

  private Object elements[];
  private int size = 0;

  public GArrayList() {
    elements = new Object[1];
  }

  public T get(int i) {
    return (T) elements[0]; // javac complains about this line.
  }
}

解决方法

您声明了一个通用类,但是没有使用通用类型T存储数据。因为您使用的是数组,所以实际上不可以。在这种情况下,只要您确保类将仅添加类型T的对象,就可以取消警告。

public class GArrayList<T> {

  private Object elements[];
  private int size = 0;

  public GArrayList() {
    elements = new Object[1];
  }

  @SuppressWarnings("unchecked")
  public T get(int i) {
    return (T) elements[0]; // javac complains about this line.
  }

  public void add(T element) {
    elements[index++] = element;
  }
}

请注意,add()方法仅接收T,并且该数组是私有的,因此无法从类外部进行访问。但是,是的,add()方法不起作用。只是为了说明如何自己确保类型安全。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。