比较两种方法时出错
Error while comparing two methods
所以我正在尝试做一个简单的程序,它可以使用泛型找到复数的模块并比较两个模块:
public class ComplexNumber <T extends Number,U extends Number>
implements Comparable<ComplexNumber<T, U>>
{
private T real;
private U imaginary;
public ComplexNumber(T real, U imaginary)
{
this.real=real;
this.imaginary=imaginary;
}
public T getReal()
{
return real;
}
public int compareTo(ComplexNumber<?, ?> o)
{
return this.modul().compareTo(o.modul());
}
public U getImaginary()
{
return imaginary;
}
public double modul()
{
double c=Math.sqrt(real.doubleValue()*real.doubleValue()+imaginary.doubleValue()*imaginary.doubleValue());
return c;
}
public String toString()
{
return String.format("%.2f+%.2fi", real.doubleValue(), imaginary.doubleValue());
}
}
但是它给了我两个实时错误,一个在 .compareTo 函数中指出:"Cannot invoke compareTo(double) on the primitive type double"
和 class 开头的一个:“此行有多个标记
- ComplexNumber 类型必须实现继承的抽象方法
比较>.compareTo(ComplexNumber)
- ComplexNumber 类型必须实现继承的抽象方法“
您正在寻找符合以下内容的内容:
@Override
public int compareTo(ComplexNumber<T, U> o) {
// logic
}
编辑
如果您确实需要使用通配符,那么您需要将 class 声明更改为:
class ComplexNumber <T extends Number,U extends Number> implements Comparable<ComplexNumber<?, ?>>
在这种情况下,您可以保留 compareTo
方法签名。
关于您收到的第一个错误,这是因为您正试图在基元类型 double
上调用 compareTo
方法,这根本不起作用。要解决此问题,您需要使用 Double.compare
并传入适当的数据。
@Override
public int compareTo(ComplexNumber<?, ?> o) {
return Double.compare(modul(), o.modul());
}
所以我正在尝试做一个简单的程序,它可以使用泛型找到复数的模块并比较两个模块:
public class ComplexNumber <T extends Number,U extends Number>
implements Comparable<ComplexNumber<T, U>>
{
private T real;
private U imaginary;
public ComplexNumber(T real, U imaginary)
{
this.real=real;
this.imaginary=imaginary;
}
public T getReal()
{
return real;
}
public int compareTo(ComplexNumber<?, ?> o)
{
return this.modul().compareTo(o.modul());
}
public U getImaginary()
{
return imaginary;
}
public double modul()
{
double c=Math.sqrt(real.doubleValue()*real.doubleValue()+imaginary.doubleValue()*imaginary.doubleValue());
return c;
}
public String toString()
{
return String.format("%.2f+%.2fi", real.doubleValue(), imaginary.doubleValue());
}
}
但是它给了我两个实时错误,一个在 .compareTo 函数中指出:"Cannot invoke compareTo(double) on the primitive type double"
和 class 开头的一个:“此行有多个标记 - ComplexNumber 类型必须实现继承的抽象方法 比较>.compareTo(ComplexNumber) - ComplexNumber 类型必须实现继承的抽象方法“
您正在寻找符合以下内容的内容:
@Override
public int compareTo(ComplexNumber<T, U> o) {
// logic
}
编辑
如果您确实需要使用通配符,那么您需要将 class 声明更改为:
class ComplexNumber <T extends Number,U extends Number> implements Comparable<ComplexNumber<?, ?>>
在这种情况下,您可以保留 compareTo
方法签名。
关于您收到的第一个错误,这是因为您正试图在基元类型 double
上调用 compareTo
方法,这根本不起作用。要解决此问题,您需要使用 Double.compare
并传入适当的数据。
@Override
public int compareTo(ComplexNumber<?, ?> o) {
return Double.compare(modul(), o.modul());
}