0

クラスを実装する必要がありComplexNumberます。2 つのジェネリック パラメータTとがありU、これは Number クラスを継承する何らかのクラスからのものでなければなりません。Complex クラスには、実部と虚部の 2 つのフィールド (インスタンス変数) があり、これらのメソッドを実装する必要があります。

  1. ComplexNumber(T real, U imaginary)- コンストラクター
  2. getReal():T
  3. getImaginary():U
  4. modul():double- これは複素数のモジュラスです
  5. compareTo(ComplexNumber<?, ?> o)- このメソッドは、2 つの複素数のモジュラスに基づいて比較を行います

compareToこれらのワイルドカードを操作する方法がわからないため、最後のメソッドを除くすべてのメソッドを実装しました。

ここに私のコードがあります: ここでヘルプ - ペーストビン

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 
    }




}

この方法を手伝ってくれる人はいますか?

4

3 に答える 3

2

モジュラスを比較するだけでよいので、型パラメーターは気にしません。

@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<?, ?>>
于 2013-10-29T14:37:02.940 に答える