このような特定の問題は他に見られなかったので、これを試して検索するのは難しい問題でした. これは、クラスの宿題とは関係のないプログラミングの問題であり、仕様どおりに実装する際に問題が発生しています。
作成したい場合
Function<T>
唯一の抽象メソッドが
Apply<T>(T input1, input2)
次に、AddTwoNumbers クラスのような他の派生関数クラスに拡張します。このクラスには、Apply が T 型の input1 と input2 の合計を返します (実際には、これは Integer または Double である必要があります)。これを実装するにはどうすればよいですか?
私は最初に持っているときに問題に遭遇します
public abstract class Function<T1 extends Number> {
public abstract T1 apply(T1 input1, T1 input2);
}
public class AddTwoNumbers<T1 extends Number> extends Function<T1> {
public T1 apply(T1 input1, T1 input2) {
return input1.intValue() + input2.intValue(); //Error, needs to return type T1, not int or even Integer()
}
}
Function は型を許可するジェネリックである必要がありますが、実際には、この問題のために AddTwoNumbers が Integers のみを使用することが予想されます。AddTwoNumbers で apply() メソッドを記述できる方法はありますか?
- AddTwoNumbers は Function から継承された抽象メソッドを正確に実装します
- どういうわけか、2 つの T1 値を加算して、T1 値を適切に返しますか?
T1 を Integer に安全にキャストできず、Apply のオーバーライドも保持できないという事実は、厄介な部分です。
これは私が調べていた問題の一般化です。