gpt4 book ai didi

Java 类型参数不在其范围内

转载 作者:行者123 更新时间:2023-12-01 22:19:43 24 4
gpt4 key购买 nike

我有一个类 Zeitpunkt,它实现了带有时间的日期,另外还有一个类 Suchbaum,它表示二叉搜索树。

我想在 Suchbaum 中使用 Comparator-Object 按 Zeitpunkt 日期对树进行排序,但是当我想创建 Suchbaum 对象时,它会打印指定的错误。

Zeipunkt

public class Zeitpunkt<T> implements Comparable<T>
{
private int jahr;
private int monat;
private int tag;
private int stunden;
private int minuten;
private double sekunden;

public int vergleich(Zeitpunkt a) { ... }

@Override
public int compareTo(T o) {
if(o instanceof Zeitpunkt)
return vergleich((Zeitpunkt)o);
return 0;
}
...
}

萨奇鲍姆

public class Suchbaum<T extends Comparable<T>> {
private class Element {
private T daten;
private Element links;
private Element rechts;

public Element(T t) {
daten = t;
links = null;
rechts = null;
}
}
private Element wurzel;
private Comparator<T> comp;
...
}

测试类

public class BaumTest {
public static void main(String[] args) {

// error in the following line (IntelliJ underlines the first
// "Zeitpunkt"). Suchbaum<Zeitpunkt<?>> = ... doesn't work either..
// *Completely confused*
Suchbaum<Zeitpunkt> sb = new Suchbaum<>((Zeitpunkt z1, Zeitpunkt z2) -> {
if(z1.getTag() > z2.getTag())
return 1;
else if(z1.getTag() == z2.getTag())
return 0;
else
return -1;
});
}
}

有什么想法吗? (与此主题相关的其他线程没有帮助我)

最佳答案

似乎您不想让您的 Zeitpunkt 类参数化,您只是希望它实现 Comparable 接口(interface)。所以像这样改变它:

public class Zeitpunkt implements Comparable<Zeitpunkt> {
private int jahr;
private int monat;
private int tag;
private int stunden;
private int minuten;
private double sekunden;

public int vergleich(Zeitpunkt a) {
return 0;
}

@Override
public int compareTo(Zeitpunkt o) {
return vergleich(o);
}
}

您还需要在 Suchbaum 类中定义一个构造函数:

public Suchbaum(Comparator<T> comp) {
this.comp = comp;
}

关于Java 类型参数不在其范围内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30139724/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com