2017-09-22 21 views
0

別のクラスからメソッドを呼び出すときに問題があります。これは私が使用しているコードです:メソッドを呼び出すときに追加する引数

Contact[] database=players1(); 

System.out.println(sortalg[i]); 
try { 
    Method method = Sorting.class.getMethod("selectionSort", Comparable[].class); 
    method.invoke(database); 
} 

これは私が呼び出したいメソッドです:

public static void selectionSort (Comparable[] data) 
{ 
    int min; 

    for (int index = 0; index < data.length-1; index++) 
    { 
    min = index; 
    for (int scan = index + 1; scan < data.length; scan++) 
     if (data[scan].compareTo(data[min]) < 0) 
      min = scan; 

    swap(data, min, index); 
    } 
} 

そして、これは私が取得エラーです:

れるjava.lang。 IllegalArgumentException:引数の数が正しくありません

どのような引数を追加する必要がありますか?

+0

を参照してください、あなたの 'Contact'クラスがどのようなものが見えますか? –

+1

'Contact'は' Comparable'を実装していますか? – SilverNak

+0

このメソッドは 'public static 'なので、ここではリフレクションを使う必要はありません。単に 'ClassName.selectionSort(database)'を呼び出してください。 – QBrute

答えて

2

反射を使用して静的メソッドを呼び出すのはなぜですか? は、なぜあなたはちょうど

Sorting.selectionSort(database); 

を呼び出すことはありません、ContactComparable実装と仮定すると? あなたが反射を使用する必要がある場合、あなたはあなたのケースでnullあるのメソッドを呼び出すためにオブジェクトを渡す必要があります。

method.invoke(null, database); 

this question

+0

で多くの異なる方法をループ私は反射を使用したいことができるように私は、文字列の入力からメソッドを呼び出すしようとしていますさまざまなソートアルゴリズムの私はすべてのアルゴリズムの名前を文字列配列に入れて、文字列からメソッドを呼び出すためにリフレクションを使う必要があると考えました。 残念ながら、呼び出しにnullを追加することは役に立ちません... –

関連する問題