java - 如何返回 <T extends Comparable< 的通用数组? Java 中的 super T>>?

标签 java arrays generics

我试图弄清楚为什么我的 IDE 会提醒我:

不兼容的类型:需要 T[],找到 T[]

代码位于以下片段中:

public abstract class SearcherGenerics<T extends Comparable<? super T>> {

  private T[] array; 
  private int k; 

  SearcherGenerics(T[] array, int k) {
    this.array = array;
    this.k = k;
  }

  public <T extends Comparable<? super T>> T[] getArray() {
    return array;
  }

  int getIndex() { return k; }


  abstract public <T extends Comparable<? super T>> T findElement() throws IndexingError;
}

扩展 SearcherGenerics 的 CleverSearcherGenerics:

public class CleverSearcherGenerics<T extends Comparable<? super T>> extends SearcherGenerics<T> {

  CleverSearcherGenerics(T[] array, int k) {
    super(array, k);
  }

  @Override
  public <T extends Comparable<? super T>> T findElement() throws IndexingError {
    T[] bigArray = getArray();
    int k = getIndex();

    if (k <= 0 || k > bigArray.length) {
      throw new IndexingError();
    }

    T[] smallArray = Arrays.copyOfRange(bigArray, 0, k);
    Arrays.sort(smallArray);


    for (int i = k; i < bigArray.length; i++) {
      if (bigArray[i].compareTo(smallArray[0]) > 0){
        smallArray[0] = bigArray[i];

        int j = 0;
        while ((j < k - 1) && (smallArray[j].compareTo(smallArray[j + 1]) > 0)) {
          T temp = smallArray[j];
          smallArray[j] = smallArray[j + 1];
          smallArray[j + 1] = temp;
          j++;
        }
      }
    }
    return smallArray[0];
  }
}

最佳答案

不需要方法 getArray()findElement() 中的新通用定义。您已经在类级别定义了 T。定义您的方法如下:

public T[] getArray() {
    return array;
}

abstract public T findElement() throws IndexingError;

关于java - 如何返回 <T extends Comparable< 的通用数组? Java 中的 super T>>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59349031/

相关文章:

c - 数组与常量指针一样还是有其他区别?

c - 指向数组边界问题的指针

Java、泛型和静态方法

java - 从应用程序自动发送电子邮件

Java Swing GUI 隐藏输入

java - 如果元素值大于 10,是否可以将数组中的元素相乘?

C#:测试一个对象是否实现了接口(interface)列表中的任何一个?

generics - 以通用方式操作 Scala 集合

java - 正则表达式 : Insert space in the string after a matched pattern

java - 始终使用相同端口的多个非同时 Java 客户端-服务器连接