public class Stack {
private LinkedList<? extends Number> stack;
public <T extends Number> void push(T t){
stack.add(t);
}
public <T extends Number>T pop(){
return stack.removeLast();
}
}
最後のメソッドを追加して削除すると、コンパイル時エラーが発生します。私がここで間違っていることを理解する助けてください?プッシュでタイプの不一致:キャプチャ#2から変換できませんか? Number to T
エラー -
方法は、追加(?キャプチャ#1の番号を拡張)タイプで LinkedListのが 引数(T)のために適用されない
エラーでポップ -
タイプの不一致:キャプチャ#2の変換できません? Number to T
あなたの質問を編集し、エラーを記載してください。あなたはまた、あなたが達成しようとしていることを記述しなければなりません。 –
'?'はいくつかの 'T'ではないので、クラス内のどこでも' Stack 'と' T'を使用してください。 –
この場合ジェネリックスは必要ありません。上限の 'Number'でそれらを置き換えることができます。コードは(たとえコンパイルされたとしても)ある種の 'ClassCastException'につながる可能性が高いでしょう。あなたが 'Double 'をプッシュ(...)しようとしているのに、' Integer'を 'pop()'しようとすると... – Turing85