gpt4 book ai didi

java - 使用通配符泛型实现compareTo

转载 作者:行者123 更新时间:2023-12-02 06:35:52 24 4
gpt4 key购买 nike

我必须实现一个类 ComplexNumber 。它有两个通用参数TU ,它必须来自某个继承自 Number 类的类。 Complex 类有 2 个字段(实例变量):实部和虚部,并且必须实现这些方法:

  1. ComplexNumber(T real, U imaginary) - 构造函数
  2. getReal():T
  3. getImaginary():U
  4. modul():double - 这是复数的模
  5. compareTo(ComplexNumber<?, ?> o) - 该方法基于 2 个复数的模进行比较

我已经实现了所有这些方法,除了最后一个,compareTo ,因为我不知道如何使用这些通配符进行操作。

这是我的代码:help here - pastebin

class ComplexNumber <T extends Number,U extends Number> implements Comparable<ComplexNumber> {

private T real;
private U imaginary;

public ComplexNumber(T real, U imaginary) {
super();
this.real = real;
this.imaginary = imaginary;
}

public T getR() {
return real;
}

public U getI() {
return imaginary;
}

public double modul(){

return Math.sqrt(Math.pow(real.doubleValue(),2)+ Math.pow(imaginary.doubleValue(), 2));

}



public int compareTo(ComplexNumber<?, ?> o){

//HELP HERE
}




}

有人帮忙用这个方法吗?

最佳答案

由于您只需比较模数,因此不必关心类型参数。

@Override
public int compareTo(ComplexNumber<?, ?> o) {
return Double.valueOf(modul()).compareTo(Double.valueOf(o.modul()));
}

但是,您还必须在类型声明中添加通配符

class ComplexNumber <T extends Number,U extends Number> implements Comparable<ComplexNumber<?, ?>>

关于java - 使用通配符泛型实现compareTo,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19660979/

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