首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javac抱怨未检查的强制转换

javac抱怨未检查的强制转换
EN

Stack Overflow用户
提问于 2020-09-16 03:13:00
回答 1查看 49关注 0票数 0

我是一个做Java练习的JavaScript开发人员,我需要帮助。

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

我需要担心这个吗?

我做得对吗?

代码语言:javascript
复制
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:

代码语言:javascript
复制
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.
  }
}
EN

回答 1

Stack Overflow用户

发布于 2020-09-16 03:29:43

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

代码语言:javascript
复制
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()方法不能工作。这只是为了说明你如何能够确保类型的安全自己。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63912568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档