Hortsmann and Cornell(Vol.1)の本「CoreJava」を読んでいます。Genericsの章では、コンパイラが何を言っているかを確認するために、意図的に間違った入力を提案しています。私の問題は、コンパイラが同じエラーを出さないだけでなく、本に記載されているように入力を修正してもエラーが出続けるということです。取引は次のとおりです。
public class PairTest1 {
public static void main(String[] args) {
double middle = ArrayAlg.getMiddle(3.14, 1729, 0);
}
}
class ArrayAlg {
public static <T> T getMiddle(T[] a) {
return a[a.length / 2];
}
}
この本には、エラーが発生するはずだと書かれています。
見つかった:java.lang.Number&java.lang.Comparable>、必須:double。
代わりに、Eclipseは私にプログラムを実行させません。
ArrayAlg型のgetMiddle(T [])メソッドは、引数(double、int、int)には適用できません。
その本はそれから言います
解決策は、すべてのパラメーターをdouble値として書き込むことです。
したがって、1729を1729.1に、0を0.1に変更しました。今Eclipseは言う:
ArrayAlg型のメソッドgetMiddle(T [])は、引数(double、double、double)には適用できません。
うーん...何が起こっているのかわからなかった。提案?
ありがとう&よろしく
編集:配列を作成しdouble[] doubles = { 3.14, 1729.1, 0.1 };
てパラメーターとして指定しようとしましたが、エラーが発生しますThe method getMiddle(T[]) in the type ArrayAlg is not applicable for the arguments (double[])